Кажется, я не могу найти никакого решения для этого в SO, так что вот так.
У меня есть вызов WebMethod в C # моей страницы, как это;
$.ajax({
type: "POST",
url: "MyWebPage.aspx/jQueryMyWebMethod",
data: "{FamilyType:'" + $('.HdnFamilyType').val() + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
var obj = eval('(' + msg + ')');
}
});
В коде позади я создаю объект, сериализую его и возвращаю так:
LHCRequiredFormViewModel fvm = new LHCRequiredFormViewModel();
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(LHCRequiredFormViewModel));
MemoryStream ms = new MemoryStream( );
ser.WriteObject(ms, fvm);
return Encoding.Default.GetString(ms.ToArray());
Однако в Javascript, когда я делаю eval, я получаю ошибку;
Ожидается ']';
В момент возврата сериализованного объекта из C # данные выглядят так;
"{\"<IsApplicantLHCRequired>k__BackingField\":true,\"<IsPartnerLHCRequired>k__BackingField\":false}" string
Я должен упомянуть, что проект был .Net 2.0, и я просто возвращал сериализованный объект без всей болтовни JSON, и он работал нормально.
Итак, я перешел на 3.5, и проблема началась. Тогда я использовал JsonSerializer, но все равно получаю точно такую же ошибку.
Кто-нибудь знает, что происходит и как это исправить?