ajax不执行回调函数的解决方法
什么是ajax?
Ajax是指一种创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术。ajax也可理解为浏览器和客户端之间的中间件,在我们每次点击网页中的一个功能或超链接的时候,都会向服务器发送请求,然后再收到服务器响应,才更新页面,这样下去的话,会很耗费服务器资源,在ajax技术的产生之后,我们可以不需要刷新页面的情况下,就可以产生局部刷新的效果。
深入理解:使用 JavaScript 向服务器提出请求并处理响应而不阻塞用户核心对象XMLHttpRequest。通过这个对象,您的 JavaScript 可在不重载页面的情况与 Web 服务器交换数据,即在不需要刷新页面的情况下,就可以产生局部刷新的效果。
ajax的两种请求方式:
- ajax异步请求:异步请求就当发出请求的同时,浏览器可以继续做任何事,Ajax发送请求并不会影响页面的加载与用户的操作,相当于是在两条线上,各走各的,互不影响。一般默认值为true。异步请求可以完全不影响用户的体验效果,无论请求的时间长或者短,用户都在专心的操作页面的其他内容,并不会有等待的感觉。当我们设置async: true的时候为同步请求,一般默认值为true。
- ajax同步请求:同步请求即是当前发出请求后,浏览器什么都不能做,必须得等到请求完成返回数据之后,才会执行后续的代码,相当于是排队,也就是说,当JS代码加载到当前ajax的时候会把页面里所有的代码停止加载,页面处于一个假死状态,当这个ajax执行完毕后才会继续运行其他代码页面解除假死状态(即当ajax返回数据后,才执行后面的function)。当我们设置async: false的时候,为同步请求。
ajax不执行回调函数的解决方法:
今天在开发的过程中,突然遇到了个ajax请求的问题,我的ajax接收不了后台返回的数据,success回调函数没执行,也就是ajax不执行回调函数success:function(){}
,然而后台的数据确正常执行了,尝试了各种方法,把异步请求改为同步请求(async: false),success回调函数能够正常alert弹窗,但是下面的window.location.href
不能正常跳转.
前台代码:
1 | <script> |
后台代码:
1 | //处理用户提交的注册信息 |
都是没有问题的,最后寻思之下,是我绑定的点击button按钮不是 type=”button”,而是submit,正确结果是应该改成button即可。
Author: 小灰灰
Copyright: All articles in this blog are licensed.