Javascript 为什么我得到一个属性类型错误';长度';未定义?

Javascript 为什么我得到一个属性类型错误';长度';未定义?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我得到“无法读取未定义的属性‘长度’”: 成功:函数(数据){ 对于(i=0;i

我得到“无法读取未定义的属性‘长度’”:

成功:函数(数据){
对于(i=0;i

既然我正在将
数据
传递到函数中,那么在for循环中不应该识别
数据.length
吗?对于上下文,我正在进行AJAX调用。

在大多数情况下,这意味着
数据
可能是
空的
未定义的

但这里有不同的情况:您的数据是一个对象,而不是一个集合,所以它没有长度属性

您正在迭代
data.query.search
collection,但正在检查
data
length

success: function(data) {
   if(!data.query.search) { return; } // check if collection is present
   for(i = 0; i < data.query.search.length; i++) {
      var callData = data.query.search[i].title;
      $("#results").html(JSON.stringify(callData)); 
   }
 }
成功:函数(数据){
如果(!data.query.search){return;}//检查集合是否存在
for(i=0;i
尝试在控制台中记录
数据,然后您就会明白。这将是一个JSON响应。console.log(数据)然后看看你得到了什么。看起来即使你正确地传递了
数据
,你也需要
i
无论如何…
数据
可能是空的、未定义的,或者包含的结构与预期不符。你需要使用
控制台.log(data)对其进行故障排除
或在循环前的行中添加一个
调试器;
语句,以便您可以在浏览器控制台中调试运行时代码。-或者只需阅读上述注释中的错误,不要学习疑难解答:)
success: function(data) {
   if(!data.query.search) { return; } // check if collection is present
   for(i = 0; i < data.query.search.length; i++) {
      var callData = data.query.search[i].title;
      $("#results").html(JSON.stringify(callData)); 
   }
 }