The JSON response from the following code is erroneously escaped as described below.
My web method is as follows:
[WebMethod (Description="doc here")] [ScriptMethod(ResponseFormat=ResponseFormat.Json)] public string responseMyObject() { if (!Setup()) return ""; ... Proxy pu = new Proxy(...); ... string toReturn = JavaScriptConvert.SerializeObject(pu.getMyObject()); Console.WriteLine(toReturn); return toReturn; }
from the console I get:
{"field1":vaule1,"field2":value2}
from JS:
$.ajax({ type: "POST", url: "/myapi/myClass.asmx/responseMyObject", data: "{}", contentType: "application/json; charset=utf-8", dataType: "json", success: function(msg) { var object = msg.d; alert(object.field1); } });
The problem is that in the header of the HTTP response, I see that the JSON response is erroneous (?) Escaped as follows:
{"d":"{\"field1\":value1,\"field2\":value2}"}
What is strange is that console printing is fine (but not yet encapsulated in {d: ...}
{"field1":value1,"field2":value2}
With similar code, if I call [WebMethod], which returns the base types (without an object), the JSON response is fine. How:
{"d": 8080}
noname
source share