2014-04-06 2 views
0

noti_array [0] = 'meghan & 3', noti_arra [1] = 'tylor & 5'라는 두 개의 요소가있는 noti_array 배열이 있습니다. 및 번호는 '&이', 각 반복에서, 나는 아약스 요청 위마지막 아약스 요청이 자바 스크립트에서 완료 될 때만 입력하십시오.

for(var i=0;i<noti_array.length;i++) 
{ 

    var mesg_array = new Array(); 
    mesg_array=noti_array[i].split('&'); 
    who_sent=mesg_array[0]; //first iteration, meghan 
    sent_num=mesg_array[1]; //3 

    //send the user name to a ajax request 
    $.ajax({ 
     url:'getLastCon.php', 
     method:'post', 
     data:{who_sent:who_sent}, 
     success:function(data){ 
      alert(who_sent); 
      } 
    }); 
} 

이 코드에 사용자 이름을 보낼으로 연결된 것없는 경고 메건과 타일러, 대신에이 두 번 타일러는 경고, 그리고 내가 사용하는 경우 아약스 요청 후 '휴식', 그것은 한 번만 meghan 경고 것, 나는 아마 루프가 다음 반복을 입력 아약스 요청이 완료되지 않은 것 같아

답변

0

who_sent은 글로벌 변수가 될 수 있습니다. 이 경우 AJAX 호출의 비동기 특성으로 인해 마지막 할당 값 who_sent에 대한 경고가 트리거됩니다. who_sent을 로컬 변수로 만들거나 var : var who_sent = mesg_array[0];을 추가하여 다른 변수를 추가하십시오.

편집 : 위의 내용은 루프에서 변수가 어떻게 유지되는지에 대해 잘못되었습니다. 부정확 한 정보에 대해 유감입니다. 다음 코드는 여러분이 원하는대로 할 것입니다 :

for(var i=0 ; i < noti_array.length ; i++) { 

    var mesg_array = noti_array[i].split('&'); 
    who_sent = mesg_array[0]; //first iteration, meghan 
    sent_num = mesg_array[1]; //3 

    (function(who) { 
     //send the user name to a ajax request 
     $.ajax({ 
      url: 'getLastCon.php', 
      method: 'post', 
      data: { who_sent:who }, 
      success: function(data) { 
       alert(who); 
      } 
     }); 
    })(who_sent); 
} 
+0

루프 안에 var who_sent가 있으면 반복문이 반복됩니다. 다시 선언 한 것과 같은 문제가 있습니까? –

+0

아니요 변수의 범위는 루프 안에 있습니다. 결국, 변수는 파괴되고 다음 번에 다시 생성됩니다. –

관련 문제