cll*_*pse 15 javascript jquery json
使用jQuery加载一些JSON数据时,我得到一个解析错误.这是我的代码片段:
jQuery.ajax({
dataType: "json",
success: function (json)
{
jQuery.each(json, function ()
{
alert(this["columnName"]);
});
}
});
Run Code Online (Sandbox Code Playgroud)
解析非空JSON对象时没有错误.所以我的猜测是问题出在我的序列化器上.
问题是:如何格式化jQuery不会考虑格式错误的空JSON对象?
这是我到目前为止所尝试的,没有成功:
{[]}
{[null]}
{}
{null}
{"rows": []}
{"rows": null}
{"rows": {}}
Run Code Online (Sandbox Code Playgroud)
更新:
我能理解我有点模糊 - 让我试着澄清一下:
解析JSON对象不是问题 - JQuery是 - 我想.
jQuery抛出一个解析错误(调用错误函数).似乎jQuery的内部JSON验证不接受任何前面提到的对象.甚至不是有效的.
错误函数的输出是:
XMLHttpRequest:
XMLHttpRequest readyState = 4 status = 200
textStatus:
parsererror
errorThrown:
undefined
这适用于前面提到的所有对象.
首先{[]}
,{[null]}
并且{null}
将无法工作,因为它们都是无效的JSON对象(由JSON验证器验证).
其余对象都是有效的JSON对象,因此success
应该调用您的函数.
如果传递非数组或类数组的对象对象,则该each
函数将json
通过其命名属性枚举对象.在你的三个对象,每有一个的情况下,rows
属性this
将被设置为[]
,null
,和{}
分别,没有一个是有一个columnName
属性,这样一个未定义的错误将被抛出.
{}
另一方面,您的对象没有属性,因此不应该导致错误,因为each
调用将循环0次.如果将其添加为success
函数的第一行,则显示以下行?
alert(typeof json + ' ' + (json == null));
Run Code Online (Sandbox Code Playgroud)
代替:
$(json).each(function () { ... });
Run Code Online (Sandbox Code Playgroud)
我想你想使用:
$.each(json, function () { ... });
Run Code Online (Sandbox Code Playgroud)
此函数与$().each()不同 - 它用于专门迭代 jQuery 对象。该函数可用于迭代任何内容。
归档时间: |
|
查看次数: |
33080 次 |
最近记录: |