0

jQuery.post API の外でコールバックからの戻り値 (応答) を使用しようとしています。

jQuery.post( ajaxurl, 'action', function( response ) 
{
console.log(response); // this comes back with "working"

// i tried this responseVal = response;  but didn't work            

}); 

alert(response); // this will be undefined.

だから私はアラートが応答にアクセスできるようにしたい....はい、コールバック内で簡単にアラートを出すことができることはわかっていますが、アプリケーションはこれを外部にアクセスする必要があります。

前もって感謝します。

4

2 に答える 2

1

そのコールバックは非同期であるため、jsでの実行は、応答が設定されるのを待たずに続行されます。おそらく、火災が発生するまでには発生しないため、responseValは設定responseVal = responseていません。alert(responseVal)

これをテストするresponseValには、明らかに「設定されていない」値に初期化し、ajax呼び出しを実行し、アラートを出し、スクリプトで時間を浪費し(などwhile(responseVal == "not set") { i++; })、再度アラートを出します。

私はあなたの質問があなたがresponse成功のコールバックであなたが必要とするものを何でも使うことができないと言っていることを知っています、しかし私はあなたがそうする方法を理解するためにもっと一生懸命努力するsetInterval(...)ことを提案しasync=falseます(jQuery.ajax(...)そのリクエストを投稿し、URLを設定するなどとともに)実行を保留します。

于 2012-07-04T02:29:30.263 に答える
1

responsealert を呼び出すと範囲外になります。

次のスニペットは、resultが設定されているかどうかを確認し、設定されている場合は間隔とアラートをクリアする関数を実行しresultます。

var result, interval;

jQuery.post( ajaxurl, 'action', function( response ) 
{
    result = response;
}); 

interval = setInterval(function(){
    if(result !== undefined) {
        clearInterval(interval);
        alert(result); 
    }
}, 1000);
于 2012-07-04T02:19:33.280 に答える