Ajax-запрос к моим веб-сервисам возвращает XML в моем JSON - PullRequest
0 голосов
/ 29 июля 2010

У меня возникла именно эта проблема, о которой говорилось в этом вопросе

Веб-служба ASP.NET JSON всегда возвращает ответ JSON, заключенный в XML

Уже поздно, и яуже 10 часов сидел в этом кресле, пытаясь заставить работать ajax и json, и все, что я получил, было глубоко разочаровано.

Так кто-нибудь знает, как заставить мой веб-сервис не возвращать мой объект json, завернутый в xml?Если я просто сделаю прямой dataType: "JSON", то я ничего не получу.Я должен сделать dataType: "jsonp", чтобы получить что-нибудь обратно с сервера вообще.Но как только я сделаю jsonp, я получу свой json, завернутый в xml.

Пожалуйста, помогите Спасибо Шерил

1 Ответ

3 голосов
/ 29 июля 2010

Если вы установите тип ответа на json , то jQuery проверяет ответ, чтобы увидеть, является ли он действительным JSON (а поскольку это XML, это не так) ... когда он недопустим молча происходит сбой, поскольку jQuery 1.4 + .

При отправке запроса есть 3 важных бита, по умолчанию это должно быть POST, и вам необходимо установить contentType в "application/json; charset=utf-8" следующим образом:

$.ajax({
  url: 'MyService.asmx/Method',
  type: 'POST',
  data: myData,
  dataType: 'json',
  contentType: "application/json; charset=utf-8",
  success: function(data) {
    //do something with data
  }
});

Затем на стороне сервера убедитесь, что у вас установлен атрибут ScriptService , вот пример очень минимальное расположение:

[WebService] //here by default when you create the service
[ScriptService]
public class MyService : System.Web.Services.WebService 
{
  [WebMethod]
  public MyObject MyMethod(int id) 
  {
    return new MyObject();
  }
}
...