【发布时间】:2009-11-19 05:14:09
【问题描述】:
我似乎无法在 SO 中找到任何解决方案,所以就这样吧。
我在页面的 C# 中调用了一个 WebMethod,如下所示;
$.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,但仍然遇到完全相同的错误。
有人知道发生了什么以及如何解决吗?
【问题讨论】:
-
由于您使用的是 jQuery 并且您已将数据类型设置为 JSON,因此 msg 变量应该已经是 JSON 对象。应该不需要 eval()。
-
我同意,但是当我尝试这样做时,我仍然无法获得对象中的属性。我已将该项目带回 2.0,稍后将在时间/金钱允许时进一步调查。我将使用 FireBug 深入挖掘。谢谢@Odge
标签: c# javascript json