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

어떤 라인을 말하고 있습니까? "정의되지 않은"경고는 무엇입니까? –

+0

내 게시물을 편집했습니다. 이 스크립트는 16 번, 15 번 모든 것이 올 바르고, 처음에는 처음이 아니라고 경고합니다.이 경우 arr.img = "undefined"입니다. – bah

답변

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

+0

내 대답이 업데이트되었습니다. 요청에 대한 관련 코드를 콜백에 배치합니다. – user113716

+0

그건 그렇고, 같은 요청을 4 번 연속해서내는 이유는 무엇입니까? 그냥 궁금해서. – user113716