Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有更新URL的JSON响应的AJAX请求_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 带有更新URL的JSON响应的AJAX请求

Javascript 带有更新URL的JSON响应的AJAX请求,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有以下代码在页面加载时执行其工作,但我需要将其转换为在页面加载时每5秒连续发送一次请求。每次页面加载时,请求的URL都将用JSON响应变量data.update\u hash更新,替换当前的验证代码。我更愿意坚持使用$.getJSON,因为我计划在将来扩展它 当前: $('#update_status').replaceWith($('<p id="update_status">'+data.update_hash+'</p>')); $('#update_statu

我有以下代码在页面加载时执行其工作,但我需要将其转换为在页面加载时每5秒连续发送一次请求。每次页面加载时,请求的URL都将用JSON响应变量data.update\u hash更新,替换当前的验证代码。我更愿意坚持使用$.getJSON,因为我计划在将来扩展它

当前:

$('#update_status').replaceWith($('<p id="update_status">'+data.update_hash+'</p>'));
$('#update_status')。替换为($('

“+data.update_hash+”

);
只用于调试和验证请求是否通过。通常不会更新任何内容,只更新下一个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>
    
    
    //
    

您可以在
.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 }}');
}