Javascript 我如何确保我的Ajax调用已完全完成?

Javascript 我如何确保我的Ajax调用已完全完成?,javascript,jquery,Javascript,Jquery,我有以下代码: $.ajax({ cache: false, url: "/Administration/" + entity + "s/Update", data: { pk: pk, rk: rk, fld: type, val: val }, success: function () { disableLoadingIcon(); if (idArr.substr(0, 8

我有以下代码:

   $.ajax({
        cache: false,
        url: "/Administration/" + entity + "s/Update",
        data: { pk: pk, rk: rk, fld: type, val: val },
        success: function () {
            disableLoadingIcon();
            if (idArr.substr(0, 8) == 'Position') {
                location.reload(); 
            }
        }
    }); 
当用户更改某些数据时,代码会更新数据库。在这之前有一段代码可以选择数据值,一切都很好

当用户更改Position列时,数据库会发生更改,我希望触发屏幕刷新(这是一个按位置排序的报告屏幕)。刷新正常,但似乎不同步。我在成功区域中有location.reload(),但它是否可能在Ajax完成之前运行


这种刷新是否可能在数据库正确更新之前发生?当我从浏览器手动刷新页面时,数据总是以正确的顺序显示

默认情况下,AJAX是异步的。一旦发出调用,其余代码将继续执行。如果
location
的值在ajax调用返回其数据之前被更改,那么success函数将使用它执行location值时的当前值,这与ajax调用开始时不同


成功代码在ajax调用返回之前不会运行,所以这不是问题所在。但是,这取决于在启动ajax的时间和完成ajax的时间之间,位置没有改变。

默认情况下,ajax是异步的。一旦发出调用,其余代码将继续执行。如果
location
的值在ajax调用返回其数据之前被更改,那么success函数将使用它执行location值时的当前值,这与ajax调用开始时不同


成功代码在ajax调用返回之前不会运行,所以这不是问题所在。但是,这取决于从开始ajax工作到完成ajax工作之间的位置没有改变。

您的文档被缓存。你应该好好利用

location.reload(true)

使用清除缓存重新登录

您的文档已缓存。你应该好好利用

location.reload(true)

使用清除缓存重新登录

jquery
ajaxComplete
中有一个
API
。无论何时完成ajax调用,都会调用它

$.ajaxComplete(function(){
//do something
});

参考资料:

jquery
ajaxComplete
中有一个
API
。无论何时完成ajax调用,都会调用它

$.ajaxComplete(function(){
//do something
});

参考:

success
处理程序中编写的任何内容只有在完成对服务器页面的ajax请求后才会执行。因此,您可以在该处理程序中加载更新的内容。您可以使用参数接受来自成功函数的响应,并检查事务是否成功

在进行数据库更新后,可以从服务器页面返回true或false

 $.ajax({
        cache: false,
        url: "/Administration/" + entity + "s/Update",
        data: { pk: pk, rk: rk, fld: type, val: val },
        success: function (data) {
           // This will be excuted only after you receive a response from your server page
           if(data=="true")  //db updated properly
           {
              disableLoadingIcon();
              if (idArr.substr(0, 8) == 'Position') {
                location.reload(); 
              }
           }
           else
           {
              alert("Error in updating the data");
           }

        }
    }); 

success
处理程序中编写的任何内容都将仅在完成对服务器页面的ajax请求后执行。因此,您可以在该处理程序中加载更新的内容。您可以使用参数接受来自成功函数的响应,并检查事务是否成功

在进行数据库更新后,可以从服务器页面返回true或false

 $.ajax({
        cache: false,
        url: "/Administration/" + entity + "s/Update",
        data: { pk: pk, rk: rk, fld: type, val: val },
        success: function (data) {
           // This will be excuted only after you receive a response from your server page
           if(data=="true")  //db updated properly
           {
              disableLoadingIcon();
              if (idArr.substr(0, 8) == 'Position') {
                location.reload(); 
              }
           }
           else
           {
              alert("Error in updating the data");
           }

        }
    }); 

有没有一种方法,我可以使是同步的?我注意到我在Ajax运行之前更改了光标,但它似乎运行得太快了,以至于光标更改没有显示出来。我想这也是由异步引起的问题。
async:false
在.ajax设置中,但这通常不是一件好事,因为它会在请求“飞行中”时阻塞浏览器。有什么方法可以使请求同步吗?我注意到我在Ajax运行之前更改了光标,但它似乎运行得太快了,以至于光标更改没有显示出来。我想这也是由异步引起的问题。
async:false
在.ajax设置中,但这通常不是一件好事,因为它会在请求“飞行中”时阻塞浏览器。这是一个通用的“当任何ajax请求完成时”,这不是特别有用。这就是为什么每个请求版本都有“成功”和“失败”的原因。这是一个通用的“当任何ajax请求完成时”,并不是特别有用。这就是为什么每个请求版本都有“成功”和“失败”的原因。