2012-02-27 11 views
0

.loadを使用して読み取られたデータをJavaScript変数にすぐに取得するにはどうすればよいですか?即座に.loadからデータを取得する方法

JavaScript関数で.loadを使用すると、サーバーからブラウザページの要素に要素を読み取るときに、ブラウザのページ要素をすぐに読み取ると、まだ更新されていません。

次回私の機能が実行されると、ブラウザのページ要素が最新です。

以下、process_MM_button()が再度呼び出されるまで、変数latest_MMは最新ではありません。 #resultを取得しようとする前に、サーバーの応答がDOMに追加できるようになります​​機能のためのコールバック関数を使用して

function process_MM_button() { 
    $('#result').load('_wm_load3.html #MM_upload_status_windmark_field_id', function() { 
     var latest_MM = document.getElementById("result").innerHTML; 

     //or using jQuery 
     var latest_MM = $("#result").html(); 
    }); 
} 

function process_MM_button() { 
     $('#result').load('_wm_load3.html #MM_upload_status_windmark_field_id'); 

     var latest_MM = document.getElementById("result").innerHTML 
} 

enter code here 

答えて

1

あなたは​​機能のコールバック関数を使用することができます要素のHTML。​​ため

ドキュメント:

function process_MM_button() { 

    //create AJAX request 
    $.get('_wm_load3.html', function (serverResponse) { 

     //turn serverResponse variable into jQuery object (was most likely a string) and then limit it to the desired element 
     serverResponse = $(serverResponse).find('#MM_upload_status_windmark_field_id'); 
     var latest_MM = serverResponse; 

     //add the server response to the DOM 
     $('#result').html(serverResponse); 
    }); 
} 
+0

1が、注目に値する:http://api.jquery.com/load/

DOMに追加する前に、サーバーから返さまた、データを保存するために、他のAJAX関数の1つを使用することができますその変数はコールバック内でのみアクセス可能です。 AJAXは非同期であるため、呼び出し直後に結果にアクセスすることはできません。 –

+0

関数process_MM_button()は、コールバックが要素をフェッチするまでどのようにブロックできますか? (この機能の目的は、サーバーページで要素の現在の値を取得して返すことです)。 –

関連する問題