$ .ajax - отправить объект для свойства данных - PullRequest
0 голосов
/ 27 декабря 2011

Я пытаюсь вызвать метод веб-службы asmx с помощью jQuery, передать фактический объект JavaScript для data и получить обратно JSON.Самое близкое, на что я могу прийти, это:

$.ajax({
     url: "WebService.asmx/HelloWorld",
     type: "POST",
     contentType: "application/json; charset=utf-8",
     data: JSON.stringify({ num: 12, name: "Adam" }),
     dataType: "json",
     success: function (data) { alert(data.d); }
 });

Как я могу успешно сделать этот вызов без первого строкового моего объекта?

Я пробовал это (удаляя contentType)

$.ajax({
    url: "WebService.asmx/HelloWorld",
    type: "POST",
    data: { num: 12, name: "Adam" },
    dataType: "json",
    success: function (data) { alert(data.d); }
});

Но это возвращает результат в формате XML, а не в формате json.

Вот веб-метод:

[WebMethod]
[ScriptMethod]
public string HelloWorld(int num, string name) {
    return ++num + name;
}

РЕДАКТИРОВАТЬ

Вот скриншот заголовков запроса.Ясно, что для ответа тип содержимого равен xml.

enter image description here

1 Ответ

2 голосов
/ 27 декабря 2011
Установите ResponseFormat: [WebMethod] [ScriptMethod (ResponseFormat = ResponseFormat.Json)] открытая строка HelloWorld (int num, имя строки) { возврат ++ номер + имя; } Просто ПРИМЕЧАНИЕ: asmx не возвращает JSON только для GET POST

<ч /> Комментарии Дэйва

Это невозможно с конечными точками ASMX и ASPX JSON. Для них требуется тип содержимого application / json и запрос POST или отсутствие JSON.

...