Javaプログラムに添付されている基本的なhtmlファイルがあります。このJavaプログラムは、ページが更新されるたびにHTMLファイルの一部のコンテンツを更新します。時間間隔ごとにページのその部分のみを更新したい。更新したい部分をに配置できますがdiv
、の内容だけを更新する方法がわかりませんdiv
。任意の助けいただければ幸いです。ありがとうございました。
Javaプログラムに添付されている基本的なhtmlファイルがあります。このJavaプログラムは、ページが更新されるたびにHTMLファイルの一部のコンテンツを更新します。時間間隔ごとにページのその部分のみを更新したい。更新したい部分をに配置できますがdiv
、の内容だけを更新する方法がわかりませんdiv
。任意の助けいただければ幸いです。ありがとうございました。
回答:
これにはAjaxを使用してください。
ajaxを介して現在のページを取得するが、ページ全体ではなく、サーバーから問題のdivのみを取得する関数を作成します。次に、データは(jQueryを介して)問題の同じdiv内に配置され、古いコンテンツが新しいコンテンツに置き換えられます。
関連機能:
例えば
$('#thisdiv').load(document.URL + ' #thisdiv');
ロードはコンテンツを自動的に置き換えます。idセレクターの前には必ずスペースを入れてください。
$('#thisdiv').load(document.URL + ' #thisdiv>*')
#thisdiv
オリジナルの中に別の人がいるのを防ぎます#thisdiv
あなたのhtmlファイルの中に2つのdivがあると仮定しましょう。
<div id="div1">some text</div>
<div id="div2">some other text</div>
Javaプログラム自体はhtmlファイルのコンテンツを更新できません。これは、htmlがクライアントに関連している一方で、javaがバックエンドに関連しているためです。
ただし、サーバー(バックエンド)とクライアントの間で通信することはできます。
私たちが話しているのは、JavaScriptを使用して実現するAJAXです。私は、一般的なJavaScriptライブラリであるjQueryを使用することをお勧めします。
一定の間隔ごとにページを更新するとします。間隔関数を使用して、x回ごとに同じアクションを繰り返すことができます。
setInterval(function()
{
alert("hi");
}, 30000);
次のようにすることもできます:
setTimeout(foo, 30000);
fooは関数です。
alert( "hi")の代わりに、AJAXリクエストを実行できます。これは、リクエストをサーバーに送信し、divにロードするために使用できるいくつかの情報(たとえば新しいテキスト)を受信します。
古典的なAJAXは次のようになります。
var fetch = true;
var url = 'someurl.java';
$.ajax(
{
// Post the variable fetch to url.
type : 'post',
url : url,
dataType : 'json', // expected returned data format.
data :
{
'fetch' : fetch // You might want to indicate what you're requesting.
},
success : function(data)
{
// This happens AFTER the backend has returned an JSON array (or other object type)
var res1, res2;
for(var i = 0; i < data.length; i++)
{
// Parse through the JSON array which was returned.
// A proper error handling should be added here (check if
// everything went successful or not)
res1 = data[i].res1;
res2 = data[i].res2;
// Do something with the returned data
$('#div1').html(res1);
}
},
complete : function(data)
{
// do something, not critical.
}
});
バックエンドがPOSTされたデータを受信し、情報のデータオブジェクトを返すことができる(たとえば、非常に望ましい)JSONの場合、その方法を説明するチュートリアルがたくさんあります。GoogleのGSONは、しばらく使用したので、調べてみてください。
私はその種のJava POSTの受信とJSONの返送については専門的ではないので、その例を紹介するつもりはありませんが、これはまともな開始であることを願っています。
たとえばjQueryを使用して、クライアント側でそれを行う必要があります。
HTMLをID付きのdivに取得するとしますmydiv
。
<h1>My page</h1>
<div id="mydiv">
<h2>This div is updated</h2>
</div>
次のように、jQueryを使用してページのこの部分を更新できます。
$.get('/api/mydiv', function(data) {
$('#mydiv').html(data);
});
サーバー側/api/mydiv
では、mydiv内に入るHTMLのフラグメントに出入りするリクエストのハンドラーを実装する必要があります。
jQuery getとJSON応答データを使用した楽しい例については、私が作成したこのフィドルを参照してください:http : //jsfiddle.net/t35F9/1/
fetch
とinnerHTML
を使用してdivコンテンツを読み込む
$.ajax(), $.get(), $.post(), $.load()
jQueryの関数は内部的にXML HTTP
リクエストを送信します。これらの中でload()
特定のものにのみ捧げられDOM Element
ます。jQuery Ajax Docを参照してください。これらの詳細なQAはこちらです。