奇怪的数据行为,未定义的变量等

时间:2010-05-19 19:51:06

标签: jquery undefined

我的脚本非常奇怪,我得到了所有的值,但是当我想通过警告它们来检查它们时 - 首先给出“未定义”,其他的是正确的。但如果我不发出任何警报,则所有变量都显示为“未定义”。我的代码:

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

1 个答案:

答案 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();
}