I'm using JQuery and a WebMethod to send and store the string representation of a JSON object inside my database.
In the same manner, I have another WebMethod which is supposed to fetch the user settings back from the database and return it to the requesting client:
[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;
}
Everything goes well, but the problem is that when I "sniff" the http response, the response is wrapped like this:
{"d":"my_stored_json_object_as_an_escaped_string"} which would be just fine, but since the return type was set to "string", the entire stored json is skipped with '\' characters before "'s and other escape characters, therefore I can't use it as a javascript object on the client side.
I tried using something like this:
$.ajax({
type: "POST",
url: "Ajax/Default.aspx/GetUserSettings",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (usrSettingsObj) {
var obj = eval(usrSettingsObj.d);
}});
But it throws an error.
any idea how can I overcome this problem?