2010-12-28 3 views
37

누군가 나를 도울 수 있는지 궁금합니다. 데이터베이스에서 행을 에코 아웃하는 PHP 페이지가 있습니다. jquery/ajax를 통해 30 초마다 호출하고 싶습니다. 하지만 언제든지 페이지를 호출하여 양식을 통해 레코드를 추가하면 폼이 전송되면 즉시 결과를 업데이트하기 위해 아약스 호출을 통해 페이지를 원하게됩니다. 누구든지 올바른 방향으로 나를 가리키거나 몇 가지 기본 코드를 제공하여 이것을 알아낼 수 있습니까? 아직도 jquery/ajax에 대한 새로운 지식이 있습니다. 당신은 타이머에 뭔가를 설정하려면타이머가있는 Jquery/Ajax 호출

답변

67

, 당신은 자바 스크립트의 setTimeout 또는 setInterval 방법을 사용할 수 있습니다 expression 함수와 timeoutinterval입니다

setTimeout (expression, timeout); 
setInterval (expression, interval); 

밀리 초 단위의 정수입니다. setTimeout은 타이머를 한 번 실행하고 expression을 한 번 실행합니다. 반면에 setInterval은 interval이 전달 될 때마다 expression을 실행합니다.

그래서 귀하의 경우에는 다음과 같이 작동합니다 :
setInterval(function() { 
    //call $.ajax here 
}, 5000); //5 seconds 

는 지금까지 아약스가 간다, jQuery의 ajax() method를 참조하십시오. 간격을 실행하면 코드의 다른 위치에서 동일한 ajax()을 호출하는 것을 막을 수있는 아무 것도 없습니다.

+0

응답 해 주셔서 감사합니다. 그래서 위의 코드를 사용하여 위의 코드를 사용하여 매 5 초마다 Ajax 호출을 새로 고친 다음 동일한 페이지에서 누군가가 양식을 채우고 제출하면 레코드를 추가하면 동일한 setInterval 함수를 호출 할 수 있습니다. 한 번에 그 기능의 인스턴스 2 개를 실행하고 있습니까? – John

+8

그래서 사용자가 양식 제출을 시작하고 그 다음에 새 간격을 만들 때까지 간격이 30 초마다 실행됩니다. 그것은 또한 가능합니다. 'setInterval()'은 간격의 ID 인 정수를 반환합니다. 그 ID를 변수에 저장하면,'clearInterval (id)'를 호출하여 진행을 멈출 수 있습니다. 그런 다음 ajax 양식 제출을 완료 한 후에'setInterval()'호출을 다시 인스턴스화 할 수 있습니다. – treeface