2

PHPによってレンダリングされている複雑なページがあり、AJAXロングポーリングを介してページのすべての要素を最新の状態に保ちたいと考えています。更新する各要素を手動で指定することなく、これをサポートするインフラストラクチャを設計するための一般的/巧妙な方法はありますか?ただアイデアを探しています。ありがとう!

4

5 に答える 5

4

jQueryを使用して、サーバーに更新するjQueryセレクターのコンマ区切りリストを送信します。サーバーは最終的に、これらのセレクターを読み取り、セレクターに一致する要素を埋めるためのHTMLを生成することで応答します。

$.get("/updater", { elementsToUpdate: "#someDiv,#someTable,#someOtherElement"}, function(json) {
      $.each(json, function(k, v) {

        // the key is the selector, the value is the 
        // HTML to set to that (or those) element(s):
        $(k).html(v);
      });    
}, "json"); // we are expecting the server to return JSON

サーバーは、次の構造でクライアントにJSONを送信することで応答します。

 {"#someDiv":"this is some HTML to fill up div with ID someDiv","#someOtherElement":"here is some more HTML","#someTable":"here is some more HTML"}
于 2010-02-26T16:27:04.880 に答える
0

次のように、ページのjsonエンコード構造を返すページをポーリングできます。

var page = {
    'elem1': {
        'html': '<div>... ',
        'update': True
    },
    'elen2': {
        'update': False

など、必要なものを更新し、ポーリングを1回だけ行います。

于 2010-02-26T16:11:28.207 に答える
0

たぶん、ajaxを介して更新されるすべての要素に特別なクラスを追加します。また、たとえば、他のいくつかの属性で追加のデータをエンコードすることもできます。

<a class="ajaxUpdate" data="{'a':'json or whatever', 'put whatever here':'ok'}">test</a>

次に、jqueryを使用すると、そのデータを簡単に引き出して評価し、ajaxで使用できます。

于 2010-02-26T16:12:10.903 に答える
0

ページ要素の構造をプライベートデータとして保持し、それらを更新するためのパブリック要素を用意します

var page = (function(){
    var private_data = {
    //json
    };

    return {
        workOnData : function(){//process the data}

    }
})()

これは、ページデータを安全かつスムーズに保つための良い方法です。

于 2010-02-26T16:22:18.770 に答える
-1

もし私があなたなら、jQueryを使ってそれをしますo:それならあなたは次のようなことをすることができます...

$('div.updateThisClass').css('color','#fff')

于 2010-02-26T16:19:08.420 に答える