我有以下代码在页面加载时执行其工作,但我需要将其转换为在页面加载时每5秒连续发送一次请求。每个页面加载,请求的URL将使用JSON响应变量data.update_hash替换当前的verification_code进行更新。我打算在将来扩展时坚持使用$ .getJSON。
目前:
$('#update_status').replaceWith($('<p id="update_status">'+data.update_hash+'</p>'));
仅用于调试并验证请求是否正常。通常不会更新任何内容,只会更新下一个JSON请求的URL。
背景资料:
JQuery 1.10.1
<check if="{{ @ajax_update }}"><script type="text/javascript">
//<![CDATA[
$(document).ready(function() {
$.getJSON( '/ajax/update-status/{{ @verification_code }}', {
format: 'json'
})
.done(function( data ) {
if ( data.status == 'continue' ) {
$('#update_status').replaceWith($('<p id="update_status">'+data.update_hash+'</p>'));
}
else
{
$('#update_status').replaceWith($('<p id="update_status">'+data.message+'</p>'));
}
});
});
//]]>
</script></check>
答案 0 :(得分:0)
您可以在.done
处理程序中设置递归调用,如下所示:
function getToken(url) {
$.getJSON( url, {
format: 'json'
})
.done(function( data ) {
if ( data.status == 'continue' ) {
$('#update_status').replaceWith($('<p id="update_status">'+data.update_hash+'</p>'));
//calculate the new URL and call the function recursively after 5 seconds
var newURL = '/ajax/update-status/' + data.update_hash;
setTimeout(function (){
getToken(newURL);
}, 5000);
}
else
{
$('#update_status').replaceWith($('<p id="update_status">'+data.message+'</p>'));
}
});
}
然后,您可以将其连接到页面加载,如此
$(document).ready(function() {
getToken('/ajax/update-status/{{ @verification_code }}');
}