无法读取属性'长度'的未定义AJAX
Cannot read property 'length' of undefined AJAX
我已经在整个SO中搜索了这个问题,但在我的代码中没有得到任何结果。
这里有一个简单的JSON解析器,它基于端点返回的JSON对象创建一个表。以下是我迄今为止所做的尝试。
function getAJAXData(APIurl){
$.ajax({
url: APIurl,
type: "GET",
dataType: "json"
}).then(function(data){
alert(data);
});
}
function generateTable(tableId){
var objRecords = getAJAXData("http://jsonplaceholder.typicode.com/posts");
var cols = addTableHeaders(objRecords, tableId);
for(var i = 0; i < objRecords.length; i++){
var tRow = $('<tr/>');
for (var colIdx = 0; colIdx < cols.length ; colIdx++){
var cellVal = objRecords[i][cols[colIdx]];
cellVal = (cellVal == null) ? "" : cellVal;
tRow.append($('<td/>').html(cellVal));
}
$(tableId).append(tRow);
}
}
function addTableHeaders(myList, tableId){
var colSet = [];
var headers = $('<tr/>');
for (var i = 0; i < myList.length; i++) {
var hRow = myList[i];
for(var key in hRow){
if($.inArray(key, colSet) == -1){
colSet.push(key);
headers.append( $('<th/>').html(key) );
}
}
}
$(tableId).append(headers);
return colSet;
}
这个不起作用,但当我硬编码一个列表时,它会从硬编码的列表中生成一个表。有人能解释一下我在代码中做错了什么或遗漏了什么吗?谢谢
这两行是一个问题:
var objRecords = getAJAXData("http://jsonplaceholder.typicode.com/posts");
var cols = addTableHeaders(objRecords, tableId);
首先,getAJAXData
函数不返回任何内容,因此objRecords
始终是未定义的。
其次,即使它确实返回了一些东西,它也是一个异步调用,所以数据不会马上准备好。
您需要做的是将代码的相关部分封装到一个函数中,并在成功回调时调用它,这样它只有在AJAX数据准备好后才能执行。
您需要在ajax成功内部调用addTableHeaders
$.ajax({
url: APIurl,
type: "GET",
dataType: "json",
success: function(data){
//call it here
}
})
});
相关文章:
- "日期“;AJAX请求返回的类型值未定义
- 一台特定计算机的Ajax请求数据未定义/失败
- 使用javascript ajax post方法的未定义偏移PHP错误
- 错误:Ajax未定义
- 通过Ajax发送时未定义的变量
- asp.net ajax属性值timestamp未定义
- 使用ajax时,php中未定义的索引
- 引用错误:在尝试使用ajax发送数据时未定义
- 为什么在Node.js上使用jQuery时未定义$.ajax
- 页面加载时未定义的 ajax 响应
- Jquery Ajax 和 Json:如何检查是否未定义
- Jquery Ajax POST方法不工作,返回未定义的值
- 获取AJAX中未定义的值(x),web api
- TypeError Obj.root是未定义的ajax jquery
- 尝试使用AJAX将JavaScript变量传递给PHP,但得到'未定义的索引'
- 在ColdFusion中表单范围中未定义AJAX请求的发布参数
- JSON响应一直未定义(ajax文件上传)
- 未捕获的引用错误:未定义 ajax (重复 2 次)
- 无法读取属性'长度'的未定义AJAX
- & # 39; sys # 39;未定义- Ajax - master和contentpages ASP.NET 4.0