2012-04-24 2 views
1

URL에서 JSON 데이터를 주기적으로 검색하고 이에 따라 페이지를 업데이트해야합니다.ajax/json이있는 URL의 상태를 확인하십시오.

나는 테이블이 있습니다. 각 행에는 20 초마다 상태를 테스트하는 링크가 있습니다.

이것은 페이지 새로 고침 메타 태그를 사용하여 달성 할 수 있지만 아약스는 훨씬 좋은 솔루션이라고 생각합니다.

$ .getJSON을 사용해야합니까? (꽤 새로운 아약스/json)

+0

AJAX의 세계에서이 폴링 또는 [주기적으로 새로 고침]로 알려져있다 (http://ajaxpatterns.org/Periodic_Refresh). 백만 번이라고 말하지 않은 대답으로 무엇이든 쓸 수는 없습니다. 또한 사용하려는 라이브러리 (있는 경우)에 따라 달라집니다 - Google 검색에 추가하십시오. – Terry

답변

0

당신은 기본적으로 거기에있어. 무엇보다도 $.getJSON()$.ajax()의 편리한 방법이며 datatype: 'json'인데 항상 $.ajax()을 붙이는 것이 가장 좋습니다. 비동기 적으로로드하려는 함수 내에서 setTimeout을 호출하려고합니다. 여기에서 재귀를 사용할 것입니다. 이점은 AJAX 호출을 반복적으로 만들 수 있지만 이전 메서드가 완료된 경우에만 모든 것이 올바르게 작동한다는 것입니다. 이것의 간단한 예는 다음과 같을 것이다

$(function() { 
    var myFunction = function() { 
     $.ajax({ 
      url: '/place-for-cool-stuff', 
      datatype: 'json', 
      data: { ... data you need to send, e.g. method arguments ... } 
     }).done(function (data) { 
      ... do stuff with the data you get back ... 
     }).fail(function (jqXHR) { 
      ... be smart and handle failures ... 
     }).always(function() { 
      ... no matter what happens do this stuff ... 
      setTimeout(myFunction, 20000); 
     }); 
    }; 
}); 
+0

감사합니다. acconrad. 문제가없는 setTimeout 쪽을 얻을 수 있다고 생각합니다. 그러나 나머지는 여전히 매우 흐립니다! 예를 들어, 테이블의 각 행에 함수를 적용하는 방법을 설명합니다. 셀에 JSON 결과에 따라 '좋은', '나쁜', '건물'상태를 적용하고 싶습니다. – swisstony

+0

[jQuery.each()] (http : //api.jquery. com/jQuery.each /)를 사용하면 테이블의 모든 TD를 전달하고 각 TD에 함수를 적용 할 수 있습니다. 또한 귀하의 기능을 계속 호출하는 더 나은 방법에 대한 내 대답을 편집 확인하십시오. – acconrad

+0

다시 한번 감사드립니다. – swisstony

관련 문제