데이터베이스에 새 항목이있을 때 해당 항목을 다시로드하지 않고 라이브 웹 사이트에 표시하려고합니다. 가장 좋은 방법은 무엇입니까?데이터베이스에 새 항목이있을 때 새 항목을 표시하는 가장 좋은 방법
0
A
답변
0
아약스와
check();
function check() {
// ajax
setTimeout(check, 5000); // check every 5 seconds
}
1
가장 좋은 방법은 (웹 서버를 폴링하도록 AJAX를 사용) 롱 폴링을 사용하는 것입니다 시간 제한이있는 재귀 함수.
var timestamp = null;
function waitForMsg() {
$.ajax({
type: "POST",
url: "/path/to/php-script.php",
data: { timestamp: timestamp },
async: true,
cache: false,
success: function(data) {
var json = eval('(' + data + ')');
if(json['msg'] !== '') {
$('#example-element').append(json['msg'] + '<br />');
}
timestamp = json['timestamp'];
setTimeout(waitForMsg, 1000);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
$('#error').html('Error: ' + textStatus + ' (' + errorThrown + ')');
setTimeout(waitForMsg, 15000);
}
});
}
$(document).ready(function() {
waitForMsg();
});
를 그리고 PHP 같은 것을 볼 수 있습니다 :이 방법은 jQuery를 통해 롱 폴링 (혜성)를 사용
$filename = 'text_file.txt'; // Replace this with a "$query" if using a db
$lastmod = isset($_POST['timestamp']) ? $_POST['timestamp'] : 0;
$currmod = filemtime($filename);
while($currmod <= $lastmod) {
usleep(10000);
clearstatcache();
$currmod = filemtime($filename);
}
$response = array();
$response['msg'] = file_get_contents($filename); // Or run your db query here
$response['timestamp'] = $currmod;
echo json_encode($response);
+0
'setTimeout' /'setInterval'에 문자열을 전달하지 마십시오. 필요가 없습니다. 'setTimeout (waitForMsg, 15000);'이 여기에서 작동합니다 (전역 범위에서의 충돌을 피하거나 "전역 범위"에서 waitForMsg를 가지지 않습니다). –
+0
@pst 제안을 테스트했지만 여전히 작동합니다. 고침, 고마워. –
관련 문제
- 1. 새 프로젝트에서 TFS를 사용하는 가장 좋은 방법
- 2. 프로젝트를 새 프로젝트로 옮기는 가장 좋은 방법
- 3. 새 값을 삽입하는 가장 좋은 방법
- 4. 데이터를 표시하는 가장 좋은 방법
- 5. 기본 레일 질문 - 데이터베이스에 새 항목을 만드는 방법?
- 6. redirect_to 이후 새 게시물을 강조 표시하는 가장 좋은 방법이 있습니까?
- 7. IEnumerable에 새 항목을 삽입하는 방법
- 8. NavigationController없이 새 UIViewController를 표시하는 방법
- 9. iOS 새 UIView를 표시하는 방법?
- 10. 여러 항목의 ListView에서 새 활동에 단일 항목을 표시하는 방법 (Android)
- 11. IM 스타일 앱에서 새 메시지를 수신하는 가장 좋은 방법
- 12. VGroup : 추가/제거 할 때 새 요소를 부드럽게 표시하는 방법 (
- 13. 가장 좋은 방법/암호화 데이터베이스에
- 14. 항목을 제한하고 새 항목을 자르십시오
- 15. SQL이 없으면 새 항목을 입력하십시오.
- 16. Nhibernate가 postgresql 데이터베이스에 새 항목을 저장할 수 없습니다.
- 17. 데이터베이스에 여러 플래그를 저장하는 가장 좋은 방법
- 18. 새 탭 또는 새 창에서 메뉴 항목을 열지 못하게하는 방법
- 19. 새 항목을 만들 때 sitecore 기본 언어
- 20. EditTextPreference가 변경 될 때 새 값을 표시하는 방법
- 21. 자동 증가 문제 - 데이터베이스에 항목을 추가하고 동시에 표시하는 가장 좋은 방법
- 22. sql은 새 항목을 추가하지 않습니다. :(
- 23. 전제 조건을 기반으로 새 인스턴스를 만드는 가장 좋은 방법
- 24. 클릭 한 목록보기에서 새 활동을 시작하는 가장 좋은 방법
- 25. 프로젝트 관리자 앱에서 새 프로젝트를 테스트하는 가장 좋은 방법
- 26. 탭 구분 csv 파일에 새 열을 추가하는 가장 좋은 방법
- 27. 안드로이드 - onResume()의 새 위치를 얻는 가장 좋은 방법
- 28. 처리해야 할 새 파일을 확인하는 가장 좋은 방법
- 29. 월별 이벤트 목록을 표시하는 가장 좋은 방법
- 30. 무들 데이터베이스에 새 테이블을 추가하십시오
사용 아약스 요청을 마지막으로 사이트 날짜 또는 ID에 표시하여 최신 항목을 선택합니다 ... –
글쎄, "다시로드하지 않고"기본적으로 "AJAX"- XHR (끌어 오기), iframe (끌어 오기), XHR/혜성 (밀어 넣기), 또는 심지어 플래시/SL 등의 형태로 제공됩니다. 정말로 너무 애매하고 충분히 세련되지 않았습니다. –