记录一次前端ajax提交失败提示{“readyState”:0,“status”:0,“statusText”:“error”}的错误
目前在开发一个H5手机端的网页中,前端小妹使用jQuery的Ajax Post提交数据时发现PC浏览器可以提交,但在部分手机浏览器上是无法提交的。例如iPhone自带的浏览器、夸克、华为自带浏览器等,输出的log是{“readyState”:0,“status”:0,“statusText”:“error”},我tm顿时觉得脑壳疼,但看到小妹无奈的表情,我觉得是时候出马在背后挺她了。
解决过程:
- 在面向百度编程中,有网友说是form表单的submit按钮+ajax两个一起使用而导致的,查了下代码发现并不是。
- 接着百度说是ajax初始化还没有调用send()方法,思考了下感觉在扯淡所以就没理会。
- 后来百度又说是因为ajax的异步问题要设成同步,想想感觉有点小扯淡,冒着不怎么相信的心态去试,果然不行。
- 最后说是跨域的问题,但后端已设置了跨域的配置。
原来的配置:
后来看了相关的文章,感觉出现的问题所在可能是: 有些浏览器跨域的返回头没有被允许,接着浏览器阻止了Access-Control-Allow-Origin这个属性,所以status为0。
但配置中已经设成了,转而反思是不是响应头部属性的问题,后端设成可能有些浏览器识别不了,就重新设置了下再测试发现提交成功了;因为改了配置的原因,顺便测了下后台的功能,也没有问题,所以记录下来。
现在配置: