0

ajax が成功した後にデータを取得しようとしましたが、正しく動作しません。助けてください。

var aid='11111111V';
var dch=0;
  $.ajax({
  type:"POST",
  url:"new_hpa_fun_aplcval.php",
  data:"aid="+aid,
  success: function(msg){
      if (msg=='OK'){
          dch=1;                    
      }else{
          dch=2;
      }
  }
  });

alert(dch);
4

1 に答える 1

2

デフォルトでは、AJAX 呼び出しは非同期です (AJAX の最初の "A" は非同期を表します)。これは、成功ハンドラーが後で呼び出されることを意味します。dchしたがって、関数が返されたときに の値がまだ設定されていないため、しようとしているように、関数からの AJAX 呼び出しからの応答を返すことはできません。

代わりに、コードを再構築して、ajax 呼び出しからの応答を必要とするコードが成功ハンドラー内にあるか、成功ハンドラーから呼び出されるようにする必要があります (そして、ajax 結果をそれに渡します)。非同期 ajax 呼び出しを使用して単純な順次手続き型コードを作成することはできません。AJAX 呼び出しの非同期の性質を処理するには、コードを構造化する新しい方法を習得する必要があります。

var aid='11111111V';
$.ajax({
    type:"POST",
    url:"new_hpa_fun_aplcval.php",
    data:"aid="+aid,
    success: function(msg) {
        var dch = 0;
        if (msg =='OK'){
            dch=1;                    
        } else {
            dch=2;
        }
        // put your code here that uses the result of the AJAX call
        alert(dch);
    }
});
于 2013-10-12T08:32:25.920 に答える