У меня есть следующий код jQuery:
$.ajax({
type: "POST",
url: "Services/MyService.asmx/Select",
dataType: "json",
data: "{'data':'test'}",
contentType: "application/json; charset=utf-8",
success: function(msg){
alert(msg);
},
error: function(xhr){ alert(xhr.statusText);}
});
Вызов метода возвращает следующее:
"{"FirstName":"James"}"
Когда я возвращаю значение, мое оповещение возвращает полную строку json. Если я пытаюсь сделать alert(msg.FirstName)
, я получаю "неопределенный".
Я видел много примеров использования метода getJSON (); однако я не видел способа использовать это для глагола POST. Кто-нибудь может указать мне правильное направление, где я иду не так? Основываясь на документации jquery, возвращаемое значение должно быть таким же dataType (json), поэтому я не уверен, что мне не хватает.
EDIT:
Я посмотрел на свой сервис, и это совпадает с примерами, которые я нахожу в терминах сигнатуры метода, возвращающего строку. Я также подтвердил, что тип ответа - application / json.
EDIT2:
Обновлен ответ, чтобы включить внешние кавычки. Я также использую пользовательский JavaScriptConverter для выполнения сериализации JSON. Пользовательский конвертер просто берет свойства моего объекта (в данном случае FirstName) и загружает его и его значение в коллекцию Dictionary, которую легко сериализовать в ASP.Net AJAX Extensions v1.0.
EDIT3:
Рассматривая проблему, которая возникла с eval () (она вызвала ошибку Expected ";"
), я заметил, что имена свойств json также заключены в кавычки. Как только я удалил кавычки из имени свойства (не значения), eval () снова заработал. Рассматривая эту проблему на стороне сервера сейчас.