为什么post后台显示有返回数据,但是调用时候是空的
如图,这个在网页显示POST请求是正常的,但是把输出xhr.responseText是空的,但是有一点很奇怪,如果再那个变量下面加一个消息框输出变量,那个时候弹框的时候控...
如图,这个在网页显示POST请求是正常的,但是把输出xhr.responseText是空的,但是有一点很奇怪,如果再那个变量下面加一个消息框输出变量,那个时候弹框的时候控制台显示POST是不完整的没有cookie也没有返回信息,但是如果不加那个消息框让整个方法执行完,再去看控制台POST又是完整的好好的并且有返回结果
展开
1个回答
展开全部
你把 xhr.open ... 最后面那个true改为false就OK了。
这个参数如果为true,那就是异步调用,xhr会不等后台服务器返回数据就继续往下运行,这个时候如果直接获取它的返回值那肯定就是空的。必须通过回调函数才能取得真正的返回值。
如果改为false,那就是同步调用,xhr会等到服务器返回数据后才继续往下执行,这时候就可以直接获取到返回值了。缺点就是页面会在这段时间内出现卡顿现象,如果后台出现错误迟迟没有返回数据,那么页面就会卡住了。
至于alert的问题,它打开的是系统级的模态对话框,这时候这个页面会被挂起, 也就是说程序会处在暂停执行状态,这时候如果后台服务器返回数据,而前端的js代码却由于暂停无法接收,所以就没有返回信息咯。因此,在程序调试阶段尽量避免用alert来输出测试数据,应该用console.log
这个参数如果为true,那就是异步调用,xhr会不等后台服务器返回数据就继续往下运行,这个时候如果直接获取它的返回值那肯定就是空的。必须通过回调函数才能取得真正的返回值。
如果改为false,那就是同步调用,xhr会等到服务器返回数据后才继续往下执行,这时候就可以直接获取到返回值了。缺点就是页面会在这段时间内出现卡顿现象,如果后台出现错误迟迟没有返回数据,那么页面就会卡住了。
至于alert的问题,它打开的是系统级的模态对话框,这时候这个页面会被挂起, 也就是说程序会处在暂停执行状态,这时候如果后台服务器返回数据,而前端的js代码却由于暂停无法接收,所以就没有返回信息咯。因此,在程序调试阶段尽量避免用alert来输出测试数据,应该用console.log
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询