如何通过原生的ajax去提交json格式的数据呢?
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if(xhr.readyState === 4 && xhr.status === 200) {
console.log(xhr.responseText);
}
}
xhr.open('POST', 'http://test.csiem.baidu.com/api/v1/userProfile/lbs', true);
xhr.setRequestHeader('Content-Type', 'application/json;charset=utf-8'); //设置HTTP header字段值
var postData = {domain: "xywy.com"}; //需要发送的数据
xhr.send(postData);
但是最后提交的时候显示的post的数据为[object object]
;
计算机传送的始终是“字符”,所谓的对象对另一种语言来说,可能啥都不是,可能碰巧能反序列化成它的对象,但传递的时候,始终是字符。
所以,{}在js里面是对象,转换成了[object object] 字符传递。
要传递对象,需要将其序列化。在服务器那边反序列化。
json的格式许多语言都能轻易转换为它能理解的对象,所以广受欢迎。js先把{}序列化,在服务器端,解析json字符串还原对象即可。
也就是说,需要tostring(或者叫serialize)的过程。
Update
一般大家都没这样做,是因为这些操作都被上层封装了,甚至是http协议也帮了忙,譬如application/json 的请求头告诉服务器关于这次发送的是个json串的信息。
一般的数据都会被格式化为
?a=b&c=d的形式 填充在req body内
不管是GET还是POST