Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Почему я получаю ответ XML на запрос jsonp?

Автор вопроса: benamsОтветов: 2

Я использую функцию jQuery.ajax, чтобы сделать запрос GET к следующему веб-сервису asp.net:

[WebMethod]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public string GetAgentsGroupNameById(int id)

Я установил для contentType значение application \ json, а значение dataType - jsonp, но я все равно получаю ответ в формате xml:

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="tempuri.org/">Sports</string>;

Вот подробности запроса и ответа, как показано в инструментах разработчика Chrome:

Я что-то не так делаю с запросом? или, может быть, с самим веб-сервисом?

  • вам нужно вернуть строковое представление объекта JSON, чтобы он работал. Каков фактический возврат сервера? Onheiron 12.07.2012
  • Я думаю, что это то, что возвращает веб-сервис ... из кода: return Newtonsoft.Json.JsonConvert.SerializeObject (agent); benams 12.07.2012

jqueryajaxweb-servicesjsonp

Ответы

Ответ 1 · Ashwin Singh

Веб-сервис может возвращать как JSON, так и XML, вам нужно будет указать, какой формат вы хотите использовать в своем вызове ajax, например, contentType: 'application/json; charset=utf-8'. Сериализация автоматическая. Не волнуйтесь, ваш код будет работать нормально. Возвращенный контент имеет форму

  <?xml version="1.0" encoding="utf-8" ?>
        <string xmlns="http://formshare.com/">
           [{"VAL1":"SSDSDSD"},{"VAL2":"PDWDWWD"}]//Example JSON
        </string>

Ответ 2 · benams

Похоже, мне нужно добавить тег скрипта, который обернет ответ (в веб-сервисе). Я знаю, что это можно сделать автоматически с помощью WCF, но я не уверен, что веб-службы asp.net могут выполнить эту работу за меня, поэтому я добавлю HttpModule, который сделает это, и дам вам знать.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы