ページの一部を更新(div)


92

Javaプログラムに添付されている基本的なhtmlファイルがあります。このJavaプログラムは、ページが更新されるたびにHTMLファイルの一部のコンテンツを更新します。時間間隔ごとにページのその部分のみを更新したい。更新したい部分をに配置できますがdiv、の内容だけを更新する方法がわかりませんdiv。任意の助けいただければ幸いです。ありがとうございました。

回答:


117

これにはAjaxを使用してください。

ajaxを介して現在のページを取得するが、ページ全体ではなく、サーバーから問題のdivのみを取得する関数を作成します。次に、データは(jQueryを介して)問題の同じdiv内に配置され、古いコンテンツが新しいコンテンツに置き換えられます。

関連機能:

http://api.jquery.com/load/

例えば

$('#thisdiv').load(document.URL +  ' #thisdiv');

ロードはコンテンツを自動的に置き換えます。idセレクターの前には必ずスペースを入れてください。


6
やあ、 '(コロンでしょ?) thisdiv ');
David Reinberger、2014年

16
この方法には大きな欠点があります。これを使用してページの一部をリロードすると、ブラウザーでページ全体をリロードせずに同じJQuery / Ajaxアクションを再度実行することはできません。このメソッドでリロードした後、JQueryは初期化されません/再び機能しません。
Marcel Wasilewski、2015年

2
#タグの前にスペースが必要ですか?#tagを削除すれば、私のために働きました。
Kurkula 2016年

2
@GregHilstonは、私のjsコードです$( '#dashboard_main_content')。load(document.URL + '#dashboard_content'); そしてこれが私のHTML <div class = "col-lg-12" id = "dashboard_main_content"> <div id = "dashboard_content">コンテンツ</ div> </ div>です
Touhami

2
$('#thisdiv').load(document.URL + ' #thisdiv>*')#thisdivオリジナルの中に別の人がいるのを防ぎます#thisdiv
Peter

17

あなたの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の返送については専門的ではないので、その例を紹介するつもりはありませんが、これはまともな開始であることを願っています。


あなたのAjaxの例、それをライブで更新するにはどうすればよいですか?
TheCrazyProfessor 2017

10

たとえば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/


クールな例で簡単に。これに不利な点はありませんか?
Luigi Lopez

3

fetchinnerHTMLを使用してdivコンテンツを読み込む


1

$.ajax(), $.get(), $.post(), $.load()jQueryの関数は内部的にXML HTTPリクエストを送信します。これらの中でload()特定のものにのみ捧げられDOM Elementます。jQuery Ajax Docを参照してください。これらの詳細なQAはこちらです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.