2016-07-12 4 views
0

단순한 스크립트를 만들어 코드 조각을 루프에서 실행할 수 있습니다.JavaScript 변수가 아약스 외부에서 정의되지 않았습니다.

var num_rows_php; 
    var num_rows_sessions_php; 
    var num_rows_session_php_teste; 

    $.ajax({ 
    url: 'verify_num_rows.php', 
    success: function(){ 
    num_rows_php = "<?php echo $my_num_rows; ?>"; 
    num_rows_session_php = "<?php echo $_SESSION['transaction_count']; ?>"; 
    num_rows_session_php_teste = "<?php echo $_SESSION['teste_num']; ?>"; 
    alert('num_rows_session' + num_rows_session_php); 
    alert('num rows session php teste' + num_rows_session_php_teste); 
    }, 

    }); 

    alert('teste fora do ajax' + num_rows_session_php_teste); 

여기에 문제가있는 부분 만 게시했습니다. 그래서 저는 아약스 함수 밖에서 변수를 생성합니다. 그래서 아약스 함수 안에서 변수를 업데이트 할 수 있습니다. 이 코드는 매 5 초마다 실행되므로 AJAX 호출이 먼저 이루어지지 않아도 변수는 언제든지 업데이트되어야합니다. 내 문제는, 내가 알리미 아약스 함수 내에서, 값이 올바른지,하지만 아약스 함수 외부의 경고 변수가 정의되지 않은 말합니다. 코드가 10 번 실행 된 후에도 alert('teste fora do ajax' + num_rows_session_php_teste);은 정의되지 않습니다. 왜 이런거야 ?

편집 :

내가이 시도 :

$.ajax({ 
      url: 'verify_num_rows.php', 
      success: function(){ 
      num_rows_php = "<?php echo $my_num_rows; ?>"; 
      num_rows_session_php = "<?php echo $_SESSION['transaction_count']; ?>"; 
      num_rows_session_php_teste = "<?php echo $_SESSION['teste_num']; ?>"; 
      alert('num_rows_session' + num_rows_session_php); 
      alert('num rows session php teste' + num_rows_session_php_teste); 
      if (num_rows_session_php_teste != num_rows_session_php) 
      { 
       alert(num_rows_session_php_teste); 
       // alert (num_rows_session_php); 
       $('#tbody').load('table_body.php') 
       $('#myfooter').load('myfooter.php') 
       $('#my-list').load('mylist.php') 



     } 
     }, 

     }); 

아약스 성공 함수 내에서 모든과 변수는 경고의 순간에 정의되어 있지 않습니다.

+1

호출합니다. Sync vs Async – Navaneeth

+0

에 대해 살펴보십시오. 그러나 변수를 값으로 설정하면 안됩니다. –

+1

아약스 성공에 당신의 행동을하거나 아약스를 일시적으로 동기화 시키십시오. 문맥에 따라 달라지는 –

답변

0

$ .ajax에서 num_rows_session_php_teste에 값을 할당 할 것으로 예상 할 수 없습니다. JS는 본질적으로 비동기이기 때문에 $ .ajax가 발생하기 전에 경고가 호출 될 수 있습니다. 따라서 num_rows_session_php_teste은 경고에서 액세스 할 때 정의되지 않을 수 있습니다. 비동기 추가

+0

이것은 대답이 아닙니다. –

+0

hm, 아약스 코드 자체에서도 일어날 수 있습니다. –

+0

아니요, 코드 안에 없습니다. $ .ajax가 호출되기 때문에 변수가 먼저 할당 된 곳으로 성공하게됩니다. 아약스 내부에서는 잘 작동하지만 외부에서는 작동하지 않습니다. – kawadhiya21

0

시도 : 때문에 Asynchronus의 당신의 AJAX 기능에 허위,

$.ajax({ 
    url: 'verify_num_rows.php', 
    async: false, 
    success: function(){ 
    } 
}) 
관련 문제