2010-05-19 48 views
0

我的脚本非常奇怪,我得到所有的值,但是当我想通过提醒他们来检查它们时 - 第一个给出“未定义”,而其他的是正确的。但是如果我不做任何警报,所有变量都显示“未定义”。我的代码:奇怪的数据行为,未定义的变量等

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

你在说什么?什么是警报“未定义”? – 2010-05-19 19:53:00

+0

我编辑了我的帖子。此脚本提醒16次,最后15次都是正确的,但不是第一次,在这种情况下,arr.img =“undefined”。 – bah 2010-05-19 19:56:29

回答

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(); 
} 
+0

那么在这种情况下我该怎么办? – bah 2010-05-19 20:01:11

+0

更新了我的答案。在回调中放置请求的相关代码。 – user113716 2010-05-19 20:03:51

+0

顺便说一句,有什么理由让你连续四次显示相同的请求?只是好奇。 – user113716 2010-05-19 20:08:19