Я использую JQuery и WebMethod для отправки и хранения строкового представления объекта JSON внутри моей базы данных.
Таким же образом у меня есть другой WebMethod, который должен получить пользовательские настройки из базы данных и вернуть их запрашивающему клиенту:
[WebMethod]
public static string GetUserSettings()
{
FacebookWebContext currentFbContext = FacebookWebContext.Current;
string encodedSettings = "{}";
if (currentFbContext.IsAuthorized(ExtendedPermissions))
{
// Methods to fetch json back from the database into "encodedSettings"
}
return encodedSettings;
}
Все идет хорошо, но проблема в том, что когда я "нюхаю" http-ответ, ответ оборачивается так:
{"d":"my_stored_json_object_as_an_escaped_string"}
, что было бы просто отлично, но так как тип возвращаемого значения был установлен на «строку», весь сохраненный json пропускается с символами «\» перед «» и другими управляющими символами, поэтому я не могу использовать это как объект javascript на стороне клиента.
Я пытался использовать что-то вроде этого:
$.ajax({
type: "POST",
url: "Ajax/Default.aspx/GetUserSettings",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (usrSettingsObj) {
var obj = eval(usrSettingsObj.d);
}});
Но выдает ошибку.
есть идеи, как мне преодолеть эту проблему?