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));
}
}