1

私はjQueryコードを持っています:

var newData = checkCP(somedata);
if(newData=="hi"){
    alert("Welcom");
}

 function checkCP(jsData){

    $.ajax({
        type: "POST",
        url: "Process.php",
        data: jsData,
        dataType: "json",
        success: function(data){
            if(data.match==1)
                return "hi";    
            else
                return "bye";
        }
    });
}

ウェルカム アラートが表示されない理由がわかりません。私はすべてをチェックしました。PHP ファイルは 1 を返しますが、どうやら AJAX 応答を待つ前に、

if(new=="hi"){
    alert("Welcom");
}

AJAX 応答を待ってから、残りのコードを jQuery で読み取る方法はありますか?

4

2 に答える 2

3

はい、$.ajax() の 'async' オプションを false に設定できます。

$.ajax({
            type: "POST",
            async: false,
            url: "Process.php",
            data: jsData,
            dataType: "json",
            success: function(data){
                if(data.match==1)
              return "hi";  
            else
              return "bye";
            }
于 2012-10-14T15:34:39.813 に答える
2

まず、変数名に「new」を使用しないでください。「新しい」はすでに何かを意味します。

さて、実際の質問に...

checkCP jquery を呼び出すと、ajax post が正常に実行され、success 関数を実行する前に応答を自動的に待機します。問題は、成功関数はスタンドアロン関数であり、そこから値を返しても checkCP からは何も返されないことです。checkCP が null を返しています。

証拠として、成功関数にアラートを貼り付けてみてください。

このような何かがうまくいくはずです:

function deal_with_checkCP_result(result)
{
     if(result=="hi"){
     alert("Welcom");
    }
}

function checkCP(jsData,callback){

        $.ajax({
            type: "POST",
            url: "Process.php",
            data: jsData,
            dataType: "json",
            success: function(data){
                if(data.match==1)
              callback( "hi");  
            else
              callback( "bye");
            }
      });

    }

deal_with_checkCP_result をコールバックとして渡す

于 2012-10-14T15:46:50.543 に答える