Я предполагаю, что вы хотите вернуть JSON-представление объекта
{
firstname:"John",
lastname:"Smith"
}
но подпись вашего метода возвращает строку. Сериализация фреймворка ASP.Net правильно сериализация строки response
. Другими словами, если ваша функция была
string response = "foo";
return response;
Вы не удивитесь, если результат будет
{"d":{"foo"}}
Просто так получается, что response
имеет двойные кавычки, которые нужно экранировать.
Вы, очевидно, просто хотите добраться до объекта. У вас есть 2 варианта: -
1) используйте eval
в вашем javascript, чтобы превратить строку в объект, например.
function onSuccessCallback(retval) {
var obj = eval(retval.d);
}`
2) или (и это мое предпочтительное решение) ваш метод возвращает реальный объект и позволяет сериализации JSON фреймворка сделать тяжелую работу за вас
[WebMethod]
public static object getData(Dictionary<string, string> d) {
var response = new { firstname = "John", lastname="Smith" };
return response;
}
Вы увидите, что это генерирует ответ, который вы, вероятно, изначально ожидали (например,
{"d":{"firstname":"John", "lastname":"Smith"}}