2010-05-19 50 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