一般常规的是提交这种{a:1,b:2}
数据,如果我要提交{a:1,b:2,c:{d:3,e:{f:5}}}
这种内嵌对象的该怎么做?
第一种
http头设置成
Content-Type: application/json
这种JSON数据可以格式化为JSON字符串提交
第二种
http头设置成
Content-Type: application/x-www-form-urlencoded
这时候就要传一个key进去,并且js对象也需要格式化成JSON字符串,大概这个样子
data=JSON.stringify({a:1})
内嵌对象和普通对象并没有什么本质上的区别,ajax提交数据都需要json化。
如下是我封装的ajax方法,请参考 xhr.setRequestHeader("Content-type", "application/json");
和 JSON.stringify(data)
部分
function ajax(url, method, data, callback){
var xhr = new XMLHttpRequest();
xhr.timeout = 3000;
xhr.ontimeout = function(){
console.log('网络超时, 请稍后重试!');
};
xhr.onload = function(){
var s = xhr.status;
if((s >= 200 && s < 300) || s == 304){
var res = xhr.responseText;
typeof callback == 'function' && callback(res);
}
};
xhr.onerror = function(){
console.log('网络问题, 请稍后重试!');
};
data = (method != 'GET' && typeof data=='object')?JSON.stringify(data):null;
xhr.withCredentials = true;
xhr.open(method, url, true);
xhr.setRequestHeader("Content-type", "application/json");
try{
xhr.send(data);
}catch(e){
console.log('网络不佳, 请稍后重试!');
}
}
ajax('你的链接','POST',你的数据,执行成功后的回调);
13 回答12.9k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
6 回答1.1k 阅读
3 回答1.3k 阅读✓ 已解决
axios默认的contentType是application/json.是支持你这种格式
如果你改了application/x-www-form-urlencoded的话.你要将有内嵌对象的字段JSON化