为什么post后台显示有返回数据,但是调用时候是空的

如图,这个在网页显示POST请求是正常的,但是把输出xhr.responseText是空的,但是有一点很奇怪,如果再那个变量下面加一个消息框输出变量,那个时候弹框的时候控... 如图,这个在网页显示POST请求是正常的,但是把输出xhr.responseText是空的,但是有一点很奇怪,如果再那个变量下面加一个消息框输出变量,那个时候弹框的时候控制台显示POST是不完整的没有cookie也没有返回信息,但是如果不加那个消息框让整个方法执行完,再去看控制台POST又是完整的好好的并且有返回结果 展开
 我来答
网海1书生
科技发烧友

2019-10-09 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26230

向TA提问 私信TA
展开全部
你把 xhr.open ... 最后面那个true改为false就OK了。

这个参数如果为true,那就是异步调用,xhr会不等后台服务器返回数据就继续往下运行,这个时候如果直接获取它的返回值那肯定就是空的。必须通过回调函数才能取得真正的返回值。
如果改为false,那就是同步调用,xhr会等到服务器返回数据后才继续往下执行,这时候就可以直接获取到返回值了。缺点就是页面会在这段时间内出现卡顿现象,如果后台出现错误迟迟没有返回数据,那么页面就会卡住了。
至于alert的问题,它打开的是系统级的模态对话框,这时候这个页面会被挂起, 也就是说程序会处在暂停执行状态,这时候如果后台服务器返回数据,而前端的js代码却由于暂停无法接收,所以就没有返回信息咯。因此,在程序调试阶段尽量避免用alert来输出测试数据,应该用console.log
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式