2012-04-02 30 views
2

私はajax呼び出しを持っています。私は戻り値(データ)をmydataという変数に入れます。その変数をajax呼び出しの外で使用したいと思います。私のコードをajax呼び出しの成功部分に組み込むことはできないことに注意してください。私はそれが混乱を追加する理由を詳述しません。だから問題は簡単です。そのajax呼び出しの外でajax呼び出しの戻り値を使用する方法はありますか?あなたの返信を先にありがとう。乾杯。マルク・JQuery - そのajax呼び出しの外にajax呼び出しの戻り値を使用する方法

$.ajax({ 
    type: "POST", 
    url: "file.php", 
    data: ajaxData, 
    success: function(data) { 
     var mydata = data;  
    } 
}); 

alert(mydata); // -> This is not working 
+0

「var mydata」を必要な範囲(つまり呼び出しの外)で宣言するだけです。 – m90

+0

'var mydata = null; $アヤックス({ タイプ: "POST"、 URL: "file.php"、 データ:ajaxData、 成功:関数(データ){=データ MYDATA; }})。警告(mydata); – YumYumYum

答えて

3

短い答え:いいえ、あなたはできない、AJAXで「非同期」の略で、そのスクリプトが完了するのAJAX呼び出しのために「待機」しないと。

あなたは、あなたがしたい場合は、マイデータが設定されているかどうかを確認する間隔のポーリングを使用することができます

var mydata = null; 

$.ajax({ 
    type: "POST", 
    url: "file.php", 
    data: ajaxData, 
    success: function(data) { 
     var mydata = data;  
    } 
}); 

var timerId = setInterval(function() { 
    if(mydata !== null) { 
     // your code 
     clearInterval(timerId); 
    } 
}, 1500); // change this to your liking, doesn't really matter 

をしかし、これはfile.phpがデータ

+0

ご了承の程よろしくお願い致します... – Marc

+2

これは悪いワーキングアラウンドです。もしajax呼び出しが成功しなかった場合、それは無限ループになります – Yorgo

+0

ajax呼び出しが戻らない場合、mydataは常にnullになり、mydata!== nullは失敗し、1.5秒ごとに関数から直ちに戻ります。 –

0

なしにnullを返すことはありませんことを前提としていますが、設定することはできませんjsグローバル変数に対するコールバック値。コールバックスタック内でコールバック値を使用する必要があります。

1

アラートに未定義またはオブジェクトが表示されていることを意味しますか?

例では、データは返されるjsonオブジェクトになります。したがって、このオブジェクトの構造を知ってそれを使用できるようにする必要があります。例えば

構造である場合:

データ= {名前は= "ボブ"、場所= "ロンドン"}

次いでdata.nameはあなたボブ値を与えるであろう。

また、mydata変数はjquery post関数のローカル変数です。関数外で使用するには、変数を関数外に定義する必要があります。

2

どのような場合でもグローバル変数を使用することはお勧めしませんが、私は何をしたいのか分かりませんが、関数内でデータ処理をラップすることができます。

このコードはうまくいきます。ちょうど非同期で、変数データが​​後で埋められるようになっています。

var process(data) { 
    // output your data 
    console.log(data); 
} 

$.ajax({ 
    type: "POST", 
    url: "file.php", 
    data: ajaxData, 
    success: process 
});