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

Я использую функцию 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: введите описание изображения здесь

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


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


Ответы (2)


Веб-сервис может возвращать как 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>
person Ashwin Singh    schedule 12.07.2012
comment
пожалуйста, прочтите мой вопрос. Я упомянул, что использовал application / json в качестве contentType (кстати, я также пробовал application / json; charset = utf-8). Это не помогло. - person benams; 12.07.2012
comment
Посмотрите на ответ еще раз. - person Ashwin Singh; 12.07.2012
comment
Спасибо за вашу помощь. Но ... не могли бы вы уточнить, пожалуйста? Мне нужно как-то сериализовать ответ XML? Если нет, что мне делать, чтобы получить ответ в формате json? (Я установил для contentType значение 'application / json; charset = utf-8'. Кроме того, мой веб-метод имеет атрибут: [ScriptMethod (UseHttpGet = true, ResponseFormat = ResponseFormat.Json)].) - person benams; 12.07.2012
comment
Сначала взгляните на этот вопрос stackoverflow.com/questions/1121559/, а затем скажите мне, что вы хотите дальше. - person Ashwin Singh; 12.07.2012
comment
Я прочитал вопрос и ответы (правильный ответ не отмечен). Единственное новое предложение, которое я вижу: сделать мой веб-метод статическим (действительно необходимым?), Вернуть объект JSON вместо строки json, установить для параметра dataType значение json вместо jsonp - тогда у меня не будет optoin для выполнения междоменных запросов. - person benams; 12.07.2012
comment
позвольте нам продолжить это обсуждение в чате - person Ashwin Singh; 12.07.2012

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

person benams    schedule 13.07.2012