データとステータスの値を変数に保存し、jquery GET/POST 関数の閉じ括弧の後に使用したいのですが、.get 括弧内にある場合にのみアラートが発生します。
$(document).ready(function(){
$.get("demo_test.asp",function(data,status){
v = data;
});
alert("Data:"+v);
});
データとステータスの値を変数に保存し、jquery GET/POST 関数の閉じ括弧の後に使用したいのですが、.get 括弧内にある場合にのみアラートが発生します。
$(document).ready(function(){
$.get("demo_test.asp",function(data,status){
v = data;
});
alert("Data:"+v);
});
ジャスパーが言っalert
たように、リクエストが完了する前にトリガーされています(非同期!)。したがって、次の 2 つのオプションがあります。
コールバック内でロジックを実行します。
$.get("demo_test.asp",function(data,status){
v = data;
alert("Data:"+v);
//Process stuff here
});
または、受信data
したものを別の関数に渡し、そこで処理します
$.get("demo_test.asp",function(data,status){
v = data;
doStuff(v);
});
function doStuff(param) {
console.log(param);
}
あなたは絶対に正しいです。コードは正常に機能しています...理由は次のとおりです。
ページがロードされてコードの実行が開始され、.get コマンドが実行されて実行が継続され、明らかに次の「アラート」に到達します。.get 関数は、ページが「アラート」部分に到達する前にデータの取得にまだ取り組んでいるため、プロンプトを表示するものは何もありません。
遅延オブジェクトを使用して、.get の後に物事をつなぎ合わせたい場合があります。調べてください:http://api.jquery.com/deferred.always/
これは、データをフェッチする関数内の別の関数に追加する方法であるため、相互に依存しています。
簡単な答えです。はい、データをグローバル変数に保存して、他の場所にアクセスできます。ただし、準備が整うまで待つ必要があります。
これを行うためのより良い方法は、代わりに jqXHR をグローバルに保存し、データにアクセスする必要があるときに完了コールバックを追加することです。
var reqDemoTest = $.get(...);
//... some time later...
reqDemoTest.done(function(data){
console.log(data);
});