作者:难道我不配_179 | 来源:互联网 | 2023-09-17 20:58
我正在尝试获取一个字典对象,该对象在服务器端转换为json对象,(以及正确的内容类型标题),但由于某种原因,即使我可以访问部分数据,其他部分也不显示up和jquery中的json对
我正在尝试获取一个字典对象,该对象在服务器端转换为json对象,(以及正确的内容类型标题),但由于某种原因,即使我可以访问部分数据,其他部分也不显示up和jquery中的json对象的长度等于0。
这是我的jquery调用:
$.ajax({ type : "POST", url : cl._url, //data : 'text='+text, data: "{}", contentType: "application/json; charset=utf-8", dataType : "json", error : function(XHR, status, error) { alert("There was an error processing the request.nn"+XHR.responseText); }, success : function(json){ if (!json.length) { alert('There are no incorrectly spelled words...'+json[0]+ ' ' + json.length); } else { // highlight bad words } cl.$container.html(html); // execute callback function, if any (callback != undefined) && callback(); } });
我通常会使用此代码获取警报框,并且json [0]按预期打印出99。 但是json.length是“未定义的”。 所以从某种意义上说,返回的json是正确的,但我的代码不会检测它并使用它。
当我直接进入我的ashx页面,我的json数据被打印在屏幕上时,我得到了这个json对象:
{"id":1,"json":[5,10,15,20],"0":"99"}
只是一个示例json输出。 那怎么来json.length不是3 ???
更新:所以我改变了我的asp.net代码,从Dictionary到List,然后添加了相同的值。 突然间,长度现在正在发挥作用。 ?!?!?! 所以Javascript中的对象没有长度?
对象没有长度属性,除非您给它们一个。 数组有,但是使用[]
而不是{}
创建数组。
如果你想知道一个对象有多少属性,你必须循环它们并计算它们:
var count = 0; for (var foo in bar) { if (bar.hasOwnProperty(foo) { count++; } }
调试此方法的最佳方法是在Firebug控制台下检查响应。 看看你是否回复了有效的回复。
您可以使用以下命令将对象转换为JSON
:
var jsOnVariable= JSON.stringify(objectVariable); var jsOnVariableLength= jsonVariable.length ;
并打印长度:
需要了解更多jQuery教程分享jQuery ajax json响应的长度未定义且数据不正确,都可以关注jQuery技术分享栏目—编程笔记
alert('Length : ' + jsonVariableLength );
以上就是jQuery教程分享jQuery ajax json响应的长度未定义且数据不正确相关内容,想了解更多jQuery开发(异常处理)及jQuery教程关注(编程笔记)。