我有以下代码,仅在调试器模式下工作,并且喙点位于console.log。当最终编译下一个每个循环时,数组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); });
最佳答案
您的function(responses)
仅在ajax完成时被调用。
Javascript不会等待它完成,而是会在数据返回之前运行console.log,从而使您在运行时一无所有。
在调试模式下,您可以在console.log上将其停止(在运行之前),以提供异步ajax调用时间来完成并填充pageData变量。
所有依赖于此数据的代码都必须位于$ .each函数之后,以便在返回数据时将它们全部一起调用。
关于javascript - 代码仅在调试器模式下可在console.log处使用断点,否则无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36094995/