페이지 일부 새로 고침 (div)


93

Java 프로그램에 첨부 된 기본 html 파일이 있습니다. 이 Java 프로그램은 페이지가 새로 고쳐질 때마다 HTML 파일의 일부 내용을 업데이트합니다. 각 시간 간격 후에 페이지의 해당 부분 만 새로 고치고 싶습니다. 새로 고침하려는 부분을에 배치 할 수 div있지만 .NET Framework의 콘텐츠 만 새로 고치는 방법을 잘 모르겠습니다 div. 어떤 도움을 주시면 감사하겠습니다. 감사합니다.

답변:


119

이를 위해 Ajax를 사용하십시오.

ajax를 통해 현재 페이지를 가져 오지만 전체 페이지가 아닌 서버에서 문제의 div 만 가져 오는 함수를 빌드하십시오. 그런 다음 데이터는 (다시 jQuery를 통해) 문제의 동일한 div에 넣고 이전 콘텐츠를 새 콘텐츠로 바꿉니다.

관련 기능 :

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

예 :

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

로드는 자동으로 컨텐츠를 대체합니다. ID 선택기 앞에 공백을 포함해야합니다.


6
이봐, 방금 '(콜론 맞습니까?) 뒤에 공백이 없다는 것을 알았습니다.이 예제는 상자에서 작동하지 않았습니다. :-) $ ('# thisdiv '). load (document.URL +'# thisdiv ');
David Reinberger 2014 년

16
이 방법은 큰 단점이 있습니다. 이것을 사용하고 페이지의 일부가 다시로드되면 브라우저에서 전체 페이지를 다시로드하지 않고는 동일한 JQuery / Ajax 작업을 다시 수행 할 수 없습니다. 이 메서드로 다시로드 한 후 JQuery는 초기화되지 않거나 다시 작동하지 않습니다.
Marcel Wasilewski

2
# 태그 앞에 공백이 필요합니까? #tag를 제거하면 나를 위해 일했습니다.
Kurkula

2
@GregHilston은 여기 내 js 코드입니다 $ ( '# dashboard_main_content'). load (document.URL + '#dashboard_content'); 여기 내 HTML <DIV 클래스는 "COL-LG-12"ID = "dashboard_main_content"=>는 <DIV ID = "dashboard_content"> 내용 </ DIV> </ DIV>
토 하미

2
$('#thisdiv').load(document.URL + ' #thisdiv>*')방지는 또 다른를 가진 #thisdiv원래의 내부#thisdiv
피터

17

html 파일 안에 2 개의 div가 있다고 가정 해 보겠습니다.

<div id="div1">some text</div>
<div id="div2">some other text</div>

html은 클라이언트와 관련이 있고 자바는 백엔드와 관련되어 있기 때문에 자바 프로그램 자체는 html 파일의 내용을 업데이트 할 수 없습니다.

그러나 서버 (백엔드)와 클라이언트간에 통신 할 수 있습니다.

우리가 말하는 것은 AJAX로, JavaScript를 사용하여 달성 할 수 있습니다. 일반적인 JavaScript 라이브러리 인 jQuery를 사용하는 것이 좋습니다.

일정한 간격마다 페이지를 새로 고치고 싶다고 가정하고 간격 함수를 사용하여 x 시간마다 동일한 작업을 반복 할 수 있습니다.

setInterval(function()
{
    alert("hi");
}, 30000);

다음과 같이 할 수도 있습니다.

setTimeout(foo, 30000);

여기서 foo는 함수입니다.

alert ( "hi") 대신 서버에 요청을 보내고 div에로드하는 데 사용할 수있는 일부 정보 (예 : 새 텍스트)를 수신하는 AJAX 요청을 수행 할 수 있습니다.

클래식 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

10

예를 들어 jQuery를 사용하여 클라이언트 측에서 수행해야합니다.

ID를 사용하여 HTML을 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 조각을 반환해야합니다.

JSON 응답 데이터와 함께 jQuery get을 사용하는 재미있는 예제는이 Fiddle을 참조하십시오. 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.