페이지 일부 새로 고침 (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

fetch및 innerHTML을 사용 하여 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.