我在方法$.toJSON(batch)
中遇到错误,该对象不支持此属性或方法。如何使用$.toJASON(batch)
方法传递批处理数组?
$.ajax({
type: 'POST',
contentType: 'application/json; charset=utf-8',
url: '@Url.Action("BatchUpdate", "Home")',
dataType: 'json',
//data: '{viewModelsBatch: '+batch+'}',
data: $.toJSON(batch),
success: function(result) {
//...
$('#jqgProducts').trigger('reloadGrid');
}
});
答案 0 :(得分:1)
我同意Paul Grime的观点,json2.js中JSON.stringify
的使用效果优于toJSON
jQuery插件。原因是在大多数网络浏览器中都实现了JSON.stringify
原生。您应该包括json2.js
,以确保如果网络浏览器不支持JSON.stringify
,则将使用JavaScript中的实现。典型的jQuery插件是另一端的纯JavaScript代码。因此序列化将慢慢。此外,json2.js的作者是道格拉斯·克罗克福德(Douglas Crockford),他是JSON标准的作者,也是着名的JavaScript语言专家。所以他在JavaScript中实现JSON序列化确实是最好的。
您的主要问题是另一个问题:为什么data: $.toJSON(batch)
或data: JSON.stringify(batch)
在您的代码中不起作用。问题不是jqGrid问题,而是纯服务器端问题。您没有在服务器端编写您使用的技术。代码看起来像ASP.NET MVC代码,但不清楚您使用的是哪个版本的ASP.NET MVC 。如果您使用的是3.0版本,它应该会自动运行,但如果是2.0版本,您需要注册自定义JsonValueProviderFactory
(请参阅here)。
答案 1 :(得分:0)
我不知道toJSON
功能是什么,所以我建议你阅读这个答案。