我的脚本非常奇怪,我得到了所有的值,但是当我想通过警告它们来检查它们时 - 首先给出“未定义”,其他的是正确的。但如果我不发出任何警报,则所有变量都显示为“未定义”。我的代码:
var arr = new Array();
function fetchData(){
$.get("post.php",
function(data){
arr.img = $(data).find("img").attr("src");
arr.link = $(data).find("td:last a").attr("href");
arr.title = $(data).find("td:last a:first b u").text();
arr.post = $(data).find("td:last span").text();
}
);
}
// On page load fetch 4 times and make bar
for (i = 0; i < 4; i++){
var str;
fetchData();
alert(arr.img);
alert(arr.link);
alert(arr.title);
alert(arr.post);
str = "<td><tr><td><a href='" + arr.link + "'><img src='" + arr.img + "' width='100' height='100' /></a></td></tr><tr><td><strong>" + arr.title + "</strong> - " + arr.post + "</td></tr></td>";
$("div").append(str);
}
答案 0 :(得分:0)
您的for
循环在收到回复之前运行。
最后15次工作的原因是,当您解除第一个警报时,已收到回复。
将警报放入回调中,您将看到我的意思。
var arr = new Array();
function fetchData(){
$.get("post.php",
function(data){
arr.img = $(data).find("img").attr("src");
arr.link = $(data).find("td:last a").attr("href");
arr.title = $(data).find("td:last a:first b u").text();
arr.post = $(data).find("td:last span").text();
var str;
alert(arr.img);
alert(arr.link);
alert(arr.title);
alert(arr.post);
str = "<td><tr><td><a href='" + arr.link + "'><img src='" + arr.img + "' width='100' height='100' /></a></td></tr><tr><td><strong>" + arr.title + "</strong> - " + arr.post + "</td></tr></td>";
$("div").append(str);
}
);
}
// On page load fetch 4 times and make bar
for (i = 0; i < 4; i++){
fetchData();
}