2012-07-03 2 views
1
function check_timer(){ 
    //get product ids 
    var product_ids= document.getElementsByClassName("product_id"); 
    //create for loop 
    for(var i=0; i<product_ids.length; i++){ 
     var product_id= product_ids[i].innerHTML; 

     $.ajax({ 
      //send product id to check 
      url: "check_last_timer.php", 
      type: "post", 
      data: {product_id: product_id}, 
      success: function(end_time){ 
       //trying to get product_id here 

       //$("#timer"+product_id).html(end_time); 
      } 
     }) 

    } 

} 

성공 함수 내에서 제품 ID를 얻으려고합니다. 당신이 볼 수 있듯이, 나는 실행될 때마다 product_id, 1,2,3 ... 10을 "check_last_timer.php"로 보내는 for 루프를 가지고있다. 문제는 성공 함수 내에서 1,2,3 ... 10을 어떻게 되 찾을 수 있는가입니다. for 루프가 실행될 때마다 마지막 제품 ID는 10입니다.성공 함수 내에서 변수의 값을 되찾음

답변

1

당신은 그 폐쇄 내에서 폐쇄 외부에 선언 된 루프 변수를 사용할 수 없습니다 처리 않습니다 다시 성공에 서버에서 그것을 얻을.

당신이 jQuery를 사용하는 것처럼, .each를 사용하십시오 정보

function check_timer() { 
    $('.product_id').each(function() { 
     var product_id = this.innerHTML; // or $(this).html() 
     $.ajax({ 
      //send product id to check 
      url: "check_last_timer.php", 
      type: "post", 
      data: {product_id: product_id}, 
      success: function(end_time){ 
       $("#timer" + product_id).html(end_time); 
      } 
     }); 
    }); 
} 
+0

을 . 고맙습니다. – Shades88

+0

Shades88 @, 그 작업을 수행하는 ... 난 그냥 새로운 교훈을 수있는 좋은 방법입니다 – Alnitak

+0

를 사용하는 것보다) 네, 많이 좋네요 (이럴이야 감사 알니 타크 –

0

이것은 AJAX 호출이 비동기를 제안하기 때문입니다. for 루프는 ajax 호출을 대기열에 저장하므로 for 루프가 너무 빠르며 ajax 호출이 완료되는 데 시간이 걸리기 때문에 마지막 ID는 10으로 설정됩니다.

당신이 할 수있는 것은 product_id를 보내 요청하는 것입니다. 다음

+0

감사합니다. 나는 실제로 당신이 언급 한 방식으로 해결하도록했습니다. –

+0

정말요? 기꺼이 도와 드리겠습니다. 그러면 내 대답을 받아들이 는게 어떨까요? ;) 우리가 .each 기능을 사용하는 방법 그래서 그건 명시 적으로 추가 폐쇄 – Shades88

관련 문제