どのようにjQuery ajaxから値 "pinNumber"を返して、それをajaxの外に追加できますか?これが私のコードです
var x = pinLast + 1; for(i = x; i <= pinMany; i ++){ var i = x ++; var cardNumber = i .toPrecision(8).split( '。')。reverse()。join( ''); var pinNumber = ''; jQuery.ajax({ タイプ: "POST"、 url: "data.php"、 data: "request_type = generator"、 async:false、 成功:function(msg){ var pinNumber = msg; return pinNumber; //ピン番号を返す必要があります } }); jQuery( '。pin_generated_table')。append(cardNumber + '=' + pinNumber + '
'); //変数pinNumberはここに移動できるはずです }
わからないことがあったら教えてください。
AJAXはデフォルトで非同期です。同期呼び出しを行わずにコールバックから値を返すことはできません。これはほぼ確実に行いたくないことです。
実際のコールバック関数をsuccess:
ハンドラーに提供し、プログラムロジックをそこに配置する必要があります。
var pinNumber = $.ajax({
type: "POST",
url: "data.php",
data: "request_type=generator",
async: false
}).responseText;
jQuery('.pin_generated_table').append(cardNumber+' = '+pinNumber+' ');
変数スコープ と関係があります。作成したローカル変数pinNumber
は、そのラッピング関数の外部からはアクセスできません。
おそらく、pinNumber
をグローバルに宣言するか、それがうまくいく場合は、単に.append()
を成功関数の中に入れます。
var _successEvent = function(response){
$('.pin_generated_table').append(cardNumber + ' = ' + response);
};
$.ajax({
type: "POST",
url: "data.php",
data: "request_type=generator"
}).done(_successEvent);
次の例を使用できます。
window.variable = 'some data';
これにより、変数がグローバルになり、どこからでもアクセスできます