2016-07-12 16 views
0

imは単純なスクリプトを作成するので、コードをループで実行できます。JavaScript変数がajaxの外側で定義されていません

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); 

ここでは、私の問題がある箇所のみを掲載しました。だから、私はajax関数の外で変数を作成するので、私はそれらをajax関数の中で更新することができます。このコードは5秒ごとに実行されるため、ajax呼び出しが最初に行われなくても、変数はいつでも更新する必要があります。私の問題は、私がアラートをajax関数の中で実行すると、値は正しいが、ajax関数の外側にある警告は変数が未定義であると言うことである。 alert('teste fora do ajax' + num_rows_session_php_teste);は、コードが10回実行された後でも、未定義です。どうしてこれなの ?

EDIT:

$.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') 



     } 
     }, 

     }); 

Ajaxの成功関数内のすべてと変数は、アラートの瞬間に定義されていない:

は、私はこれを試してみました。

+1

ためAsynchronusコールです。同期対非同期 – Navaneeth

+0

を見てみましょうが、私は値に変数を設定した場合、それは固執すべきではありませんか? –

+1

あなたの行動をajaxで成功させるか、ajaxを一時的に同期させます。 –

答えて

0

$ .ajaxがnum_rows_session_php_testeに値を割り当てることは期待できません。 JSは性質上非同期なので、$ .ajaxが発生する前に警告が呼び出される可能性があります。したがって、num_rows_session_php_testeはアラートからアクセスすると未定義になる可能性があります。非同期の追加

+0

これはコメントではありません –

+0

hm、AJAXコード自体の中でさえ起こることがありますか? –

+0

いいえ、コード内にはありません。 $ .ajaxが呼び出されるので、変数が最初に割り当てられる場所に入る。内部のAjaxブロックの中では、うまくいくが、外ではない。 – kawadhiya21

0

試し:あなたのAJAX機能にはfalse、

$.ajax({ 
    url: 'verify_num_rows.php', 
    async: false, 
    success: function(){ 
    } 
}) 
関連する問題