2016-05-15 2 views
-1

ページにロードされている他のアセット/リソースの進行状況を保持せずに、AJAX経由でデータをリクエストする最適な方法は何ですか?あなたのAJAX呼び出しからの返されたデータ/情報が必要とされるという事実は、あなたのHTMLページの生成/生成に返されるデータが使用されることです。ページロードを保持しないAJAXコールの作成

実践例:あなたは$(文書)、レディ(関数(){})を使用してコードをラップでき

$.get("pageURI", {getVar:getVal}, function(data){ 
    var response = data; 
}); 
  1. 。ドキュメントの準備ができたらHTMLを生成しますが、ページ生成ロジックをAJAX呼び出し内で囲まずに、したがって$ .get(...)...の内部では、ページにコンテンツが埋め込まれていることを確認しますあなたの応答が期待されるデータを持っていることを知っているときにのみ、したがって!未定義です。
  2. 私はAJAXコールラッパーの中にあるコードに問題はありませんが、レスポンスに依存するコードがたくさんある場合、言い換えれば約10-15の長い関数と他のロジックがある場合はどうなりますか?あなたのAJAX呼び出しをラップすることをお勧めしますか?
  3. また、ウィンドウプロパティ(window.response)/グローバル変数として応答を設定し、ページが完全にロードされた後にのみ使用できることも理解しています。例えば$(window).bind( "load"、function(){})プログラムのライフサイクル全体を通してさまざまな場所で使用される可能性がありますが、その優れたコーディング方法はありますか?

ご回答ありがとうございます。

+1

私は従いません。 AJAX呼び出しは非同期であり、ページのロードやレンダリングを保持しません。 – Wainage

+0

こんにちはWainage、私の質問は明確ではないかもしれませんが、それは申し訳ありませんが、私は何度も述べているように、私はかなり明示的に私の質問の一部を考えると、あなたは私のコードスニペットを見れば、あなたの呼び出しの外でその変数(応答)を使用しようとすると、$ .get関数内のデータに応答が設定されています。期待した値ではなく未定義になります...それは私の問題です... –

+2

ありませんAJAXの呼び出しに時間がかかるので、それが利用可能になるのを待たなければなりません。そのコールバック内からページを更新します。 – Wainage

答えて

0

必要に応じて最小ページをレンダリングし、Ajax呼び出しを実行できます。 jQueryは、Ajax呼び出しが完了したときに実行する素晴らしいコールバックを提供し、それを使用してそれに依存する他の関数を開始することができます。これを考慮してください:

var jqxhr = $.get("/twiddle-bits", function(data, status, jqXHR) { 
    // Here is where you call functions that do the second-stage data population 
    apply_changes_after_ajax_call(); 
    update_some_other_things(); 
}) 
.fail(function() { 
    show_error_messages(); 
}); 

これはあなたが探しているものを行うはずです。 HTMLページはAjaxコールの前にレンダリングされ、結果が戻ったらDOMを更新できます。これは、このような動的ページで動作する方法です。

+0

マイケルありがとうマイケルは、私があなたが提案しているアイデアを知っている、私はその周りに他の方法があるかどうかを知りたがっていると思ったが、おそらくそれを上回る方法があるかもしれないと思った。 ありがとう –

+0

@HlawuM他の唯一の方法は、同期レンダリングを実装することです。サーバー上で同期レンダリングを実行することができます。 Ajaxを明示的に使用すると、クライアント上で非同期レンダリングが必要になるため、状況に適したアプローチを選択する必要があります。 –

+0

それを調べます。ありがとう! –

関連する問題