分析
线上突然反馈一些提交操作失败,本地复现后发现请求具体的路径变成了[object%20Object]
本着最快bug查找方案,翻了
git提交记录发现最近相关文件均无修改,怀疑是最近由于等保升级jQuery导致。
系统里对Ajax的提交进行了封装,
function post(url, data, callback, target){
return $.post({
url: url,
data: data,
success: callback,
target: target
})
}
最后调用了$.post()方法,但是这样有点奇怪,这种传参的方式更像是$.ajax()方法的形式,post的参数第一个应该是url,function( url, data, callback, type ) 是这个样子的,这也就是网上查到的解决方法之一,改为$.ajax(),增加参数type:post,但是问题是之前的为什么可以呢
这是2.1.1的版本
下边是之前的
1.12.4
其实对比就很清楚了,1.12.4版本对参数对象进行了extend操作,这个函数的意义是将第二个参数赋予第一个参数,所以虽然传入的url变成了一个包含url,data的对象了,但是通过extend()方法还是可以准确的还原出来
&&和||的作用类似,js中是可以返回对象的,&&的含义是如果第一个参数为true就返回第二个参数