在前端开发中,经常要用ajax去拿后台接口返回的数据,总结几个ajax的回调的常见问题,供大家参考爬坑。
- 未定义contentType,可能会造成的传入后台的数据乱码,可以加上如下代码在ajax请求中
contentType:'application/json;charset=UTF-8',
- 约定好传到后台以及后台返回的数据类型,一般定义json类型。
JSON.stringify():将一个JavaScript值(对象或者数组)转换为一个 JSON字符串JSON.parse():将一个 JSON 字符串转换为对象
这两个是常用的json转换的api
- 在success或者error回调中,return 是拿不到值的,即使改变了async:false也拿不到,看下面的例子:
function checkUserTask(taskid){$.ajax({method:'get',url:URL.checkUserTask,async:false,data:{'id':taskid},success:(response)=>{console.dir(response)if(response.code==200 ){return true;}else{return false;}}});}
这种写法即使是成功或者失败,在调用checkUserTask方法时都是返回的undefined,拿不到true或者false标识,所以一般写法修改如下:
function checkUserTask(taskid){var flag = false;$.ajax({method:'get',url:URL.checkUserTask,async:false,data:{'id':taskid},success:(response)=>{if(response.code==200 ){flag = true;}else{flag = false;}}});return flag;}
在回调的后面return 就可以拿到返回值。