Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.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/2/jquery/71.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 jQuery ajax调用竞争条件?_Javascript_Jquery - Fatal编程技术网

Javascript jQuery ajax调用竞争条件?

Javascript jQuery ajax调用竞争条件?,javascript,jquery,Javascript,Jquery,我有以下javascript函数: function deploy() { $.ajax({ url: '/Theme/Deploy', type: 'POST' }); location.reload(); } 单击按钮时调用此函数。我想启动服务器调用,然后立即刷新页面。当我使用上面的代码时,它从不进行服务器调用,只刷新页面。当我删除location.reload()调用时,它会成功地进行调用 在ajax调用之前重新加载页面,即使页面在

我有以下javascript函数:

function deploy() {
    $.ajax({
        url: '/Theme/Deploy',
        type: 'POST'
    });
    location.reload();
}
单击按钮时调用此函数。我想启动服务器调用,然后立即刷新页面。当我使用上面的代码时,它从不进行服务器调用,只刷新页面。当我删除
location.reload()
调用时,它会成功地进行调用


在ajax调用之前重新加载页面,即使页面在代码中位于页面下方,是否存在竞争条件或其他情况?

请求是异步的。这意味着在请求完成之前调用
reload()

要实现所需功能,应将
location.reload()
放在AJAX调用的
success
处理程序中,以便在请求完成后运行:

function deploy() {
    $.ajax({
        url: '/Theme/Deploy',
        type: 'POST',
        success: function() {
            location.reload();
        }
    });
}

请求是异步的。这意味着在请求完成之前调用
reload()

要实现所需功能,应将
location.reload()
放在AJAX调用的
success
处理程序中,以便在请求完成后运行:

function deploy() {
    $.ajax({
        url: '/Theme/Deploy',
        type: 'POST',
        success: function() {
            location.reload();
        }
    });
}

请求是异步的。这意味着在请求完成之前调用
reload()

要实现所需功能,应将
location.reload()
放在AJAX调用的
success
处理程序中,以便在请求完成后运行:

function deploy() {
    $.ajax({
        url: '/Theme/Deploy',
        type: 'POST',
        success: function() {
            location.reload();
        }
    });
}

请求是异步的。这意味着在请求完成之前调用
reload()

要实现所需功能,应将
location.reload()
放在AJAX调用的
success
处理程序中,以便在请求完成后运行:

function deploy() {
    $.ajax({
        url: '/Theme/Deploy',
        type: 'POST',
        success: function() {
            location.reload();
        }
    });
}

尝试将服务器作为脚本标记调用。我不确定这是否一定会奏效,但在我的测试中,它似乎在并行请求中起作用

function deploy(){
    var head = document.getElementsByTagName('head')[0];
    var sc = document.createElement('script');
    sc.setAttribute('src', '/Theme/Deploy');
    head.appendChild(sc);
    location.reload();
}

尝试将服务器作为脚本标记调用。我不确定这是否一定会奏效,但在我的测试中,它似乎在并行请求中起作用

function deploy(){
    var head = document.getElementsByTagName('head')[0];
    var sc = document.createElement('script');
    sc.setAttribute('src', '/Theme/Deploy');
    head.appendChild(sc);
    location.reload();
}

尝试将服务器作为脚本标记调用。我不确定这是否一定会奏效,但在我的测试中,它似乎在并行请求中起作用

function deploy(){
    var head = document.getElementsByTagName('head')[0];
    var sc = document.createElement('script');
    sc.setAttribute('src', '/Theme/Deploy');
    head.appendChild(sc);
    location.reload();
}

尝试将服务器作为脚本标记调用。我不确定这是否一定会奏效,但在我的测试中,它似乎在并行请求中起作用

function deploy(){
    var head = document.getElementsByTagName('head')[0];
    var sc = document.createElement('script');
    sc.setAttribute('src', '/Theme/Deploy');
    head.appendChild(sc);
    location.reload();
}


你想干什么?无限请求???忘记使用Ajax吧。重写它,以便
/Theme/Deploy
重定向回要查看的页面。以常规表单提交数据。@Vishwanath:
deploy()
在单击“不加载页面”按钮时被调用。@Quentin:这意味着我的异步代码将在服务器上。你想做什么?无限请求???忘记使用Ajax吧。重写它,以便
/Theme/Deploy
重定向回要查看的页面。以常规表单提交数据。@Vishwanath:
deploy()
在单击“不加载页面”按钮时被调用。@Quentin:这意味着我的异步代码将在服务器上。你想做什么?无限请求???忘记使用Ajax吧。重写它,以便
/Theme/Deploy
重定向回要查看的页面。以常规表单提交数据。@Vishwanath:
deploy()
在单击“不加载页面”按钮时被调用。@Quentin:这意味着我的异步代码将在服务器上。你想做什么?无限请求???忘记使用Ajax吧。重写它,以便
/Theme/Deploy
重定向回要查看的页面。以常规表单提交数据。@Vishwanath:
deploy()
在单击“不加载页面”按钮时被调用。@Quentin:这意味着我的异步代码将在服务器上。我不想等到请求完成。因此,短语
的使用立即
开始
。恐怕你不能这样做。正如您所发现的,如果请求太慢,那么在AJAX完成之前,由于从
reload()
调用了新请求,请求将被取消。您不能简单地发出请求吗?我不在乎当前浏览器的请求是否被取消。一旦它到达服务器,它将开始运行服务器代码。这不是异步调用的要点吗?您不需要等待响应。当请求完成时,您需要仍在同一页面上。因此我使用了短语
你不能那样做
;)@im1termike当您手动执行此操作时,您看到的是AJAX请求在您点击F5刷新页面之前完成。调用
location.reload()
时,所有网络请求(包括AJAX)都将停止,页面将从头开始加载。这就是为什么Rory说你不能这么做,因为浏览器不是那样工作的。页面加载之间不能有持久的AJAX请求。我不想等到请求完成。因此,短语
的使用立即
开始
。恐怕你不能这样做。正如您所发现的,如果请求太慢,那么在AJAX完成之前,由于从
reload()
调用了新请求,请求将被取消。您不能简单地发出请求吗?我不在乎当前浏览器的请求是否被取消。一旦它到达服务器,它将开始运行服务器代码。这不是异步调用的要点吗?您不需要等待响应。当请求完成时,您需要仍在同一页面上。因此我使用了短语
你不能那样做
;)@im1termike当您手动执行此操作时,您看到的是AJAX请求在您点击F5刷新页面之前完成。调用
location.reload()
时,所有网络请求(包括AJAX)都将停止,页面将从头开始加载。这就是为什么Rory说你不能这么做,因为浏览器不是那样工作的。在页面loa之间不能存在持久的AJAX请求