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