我有以下javascript函数:
function deploy() {
$.ajax({
url: '/Theme/Deploy',
type: 'POST'
});
location.reload();
}
单击按钮时会调用此函数。我想启动服务器调用然后立即刷新页面。当我使用上面的代码时,它从不进行服务器调用,它只刷新页面。当我删除location.reload()
电话时,它会成功拨打电话。
是否存在竞争条件或发生在ajax调用之前重新加载页面的事情,即使它在代码中低于它?
答案 0 :(得分:3)
请求是异步的。这意味着{<1}}在请求完成之前被称为。
要实现您的要求,您应将reload()
置于AJAX调用的location.reload()
处理程序中,以便在请求完成后运行:
success
答案 1 :(得分:0)
尝试将服务器作为脚本标记调用。我不确定这是否可以肯定,但在我的测试中,似乎可以进行并行请求。
function deploy(){
var head = document.getElementsByTagName('head')[0];
var sc = document.createElement('script');
sc.setAttribute('src', '/Theme/Deploy');
head.appendChild(sc);
location.reload();
}