AJAXを介してレンダリングされたページのすべての要素を更新する適切な方法は何ですか?
-
23-09-2019 - |
質問
PHPによってレンダリングされている複雑なページがあり、Ajax Long Pollingを介してページのすべての要素を最新の状態に保ちたいと考えています。更新するために各要素を手動で指定することなく、これをサポートするインフラストラクチャを設計する一般的 /賢い方法はありますか?アイデアを探しているだけです。ありがとう!
解決
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"}
他のヒント
Ajaxを介して更新されるすべての要素に特別なクラスを追加すると、たとえば他の属性で追加のデータをエンコードすることもできます。
<a class="ajaxUpdate" data="{'a':'json or whatever', 'put whatever here':'ok'}">test</a>
その後、jQueryを使用すると、そのデータを簡単に引き出して評価し、ajaxで使用できます。
Webパーツページを使用してSharePoint Designerを通じてカスタマイズすることができますが、Design Managerを介したページの高度なカスタマイズは残念ながらSharePoint 2013 Foundationでは利用できません。
ページ要素をプライベートデータとして構造に保ち、それらを更新するパブリック要素を持っています
var page = (function(){
var private_data = {
//json
};
return {
workOnData : function(){//process the data}
}
})()
これは、ページデータを安全でスムーズに保つことができる良い方法です。
あなたの質問に従って、私はあなたが2つのクラスを作成したことを見ることができます、そして彼らはです
- version.class
- open.class
あなたからどこから "TitleScreen"クラスを入手していますか?
version.classのみのメインメソッドを持っています。 そのため、version.classのmain()メソッドはエントリポイントにのみ可能です。
次のようにプログラムを実行できます。
JavaバージョンTitleScreen
titleScreenはこのプログラムの入力になることができます。