ajax异步问题导致的刷新页面数据不更新

前端之家收集整理的这篇文章主要介绍了ajax异步问题导致的刷新页面数据不更新前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

ajax的async默认的设置值为true,这种情况为异步方式,就是说当ajax发送请求后,在等待server端返回的这个过程中,前台会继续 执行ajax块后面的脚本,直到server端返回正确的结果才会去执行success,也就是说这时候执行的是两个线程。

ajax用它就是因为它的异步性,平时也都是默认值,今天在项目中遇到这样一个问题,用ajax更新数据后,立马刷新页面

$.ajax({
                    type:'POST',url:'changeVoteByid.action',data:{'whos[]':whos},dataType:'json',success:function(msg){
                        alert(msg);
                    },}); 
            window.location.reload(true);

执行这段代码的话,数据库中数据确实更新了,但是window.location.reload(true);一执行即刷新页面,数据并没有变!!!
调试什么的试了好久,发现不是java代码的问题!~(~ ̄▽ ̄)~

此时想到ajax还有一个error参数用来处理错误

(默认: 自动判断 (xml 或 html)) 请求失败时将调用方法。这个方法有三个参数:XMLHttpRequest
对象,错误信息,(可能)捕获的错误对象。 function (XMLHttpRequest,textStatus,
errorThrown) { // 通常情况下textStatus和errorThown只有其中一个有值 this; // the
options for this ajax request }

于是ajax中加上这几句:

error: function(XMLHttpRequest,errorThrown) {
                        alert(XMLHttpRequest.status);
                        alert(XMLHttpRequest.readyState);
                        alert(textStatus);
                    }

此时再执行XMLHttpRequest.status一直等0,在网上搜了搜:
[AJAX问题之XMLHttpRequest status = 0]这篇文章介绍的不错!(http://www.jb51.cc/article/p-qxfhlfkw-sc.html)

但是发现我的错也不是因为这里的原因, ̄△ ̄
但能锁定就是ajax这里的问题了,

后来在chrome调试时,为了调试方便就把

window.location.reload(true);

给注释掉了,卧槽,注释掉后一切正常!!!突然间恍然大悟!!!tm异步问题有没有,这里应该是同步的!!!
要等ajax执行完,再去刷新!
加上

async: false,

好了。。。( ⊙ _ ⊙ )

jquery的ajax同步和异步区别

原文链接:https://www.f2er.com/ajax/162270.html

猜你在找的Ajax相关文章