我有以下代码,只能在调试器模式下使用,在console.log上有一个beak点。数组pageData在编译时是空的,最后不会编译下一个每个循环。我只使用ajax调用获得了10个对象如果我得到100个对象如何在数组加载之前停止调试器。这种情况发生在所有浏览器中
//ajax call ,
function(responses) {
responses.data.sort(function(a,b){
var aa=a.were;
var bb=b.were;
return bb-aa;
});
$.each(responses.data, function (index, value) {
var pageData1={
were: value.were,
id: value.id,
name: value.name,
category: value.category,
address: value.location.street,
city:value.city,
talk: value.talki,
link:value.link
}
pageData.push(pageData1);
});
});
console.log(pageData);
$.each(pageData, function(key,value){
table=table+"<tr><td><a href="+pageData[key].link+">"+pageData[key].name+"</a> </td><td>"+pageData[key].were+" </td><td> "+pageData[key].address+"</td><td> "+pageData[key].talk+"</td></tr>";
});
$("#tabledata").show();
$("#messages").append(table);
编辑:
function(responses) {
responses.data.sort(function(a, b) {
var aa = a.were;
var bb = b.were;
return bb - aa;
});
$.each(responses.data, function(index, value) {
var pageData1 = {
were: value.were,
id: value.id,
name: value.name,
category: value.category,
address: value.location.street,
city: value.city,
talk: value.talki,
link: value.link
};
pageData.push(pageData1);
});
console.log(pageData);
$.each(pageData, function(key, value) {
table +=
"<tr>" +
"<td><a href="+pageData[key].link+">"+pageData[key].name+"</a> </td>" +
"<td>"+pageData[key].were+" </td>" +
"<td> "+pageData[key].address+"</td>" +
"<td> "+pageData[key].talk+"</td>" +
"</tr>";
});
$("#tabledata").show();
$("#messages").append(table);
});
答案 0 :(得分:3)
只有在ajax完成时才会调用function(responses)
。
Javascript不会等待它完成,并且会在数据返回之前运行console.log,但在运行时没有任何内容。
在调试模式下,你在console.log(运行之前)上停止它,给async ajax调用时间来完成并填充pageData变量。
依赖于这些数据的所有代码必须在$ .each函数之后,以便在数据返回时全部一起调用。