搜索
javascript - 使用原生的ajax如何去提交json格式的数据呢?
天蓬老师
天蓬老师 2017-04-10 16:29:56
[JavaScript讨论组]

如何通过原生的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];

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(3)
PHPz

计算机传送的始终是“字符”,所谓的对象对另一种语言来说,可能啥都不是,可能碰巧能反序列化成它的对象,但传递的时候,始终是字符。

所以,{}在js里面是对象,转换成了[object object] 字符传递。

要传递对象,需要将其序列化。在服务器那边反序列化。
json的格式许多语言都能轻易转换为它能理解的对象,所以广受欢迎。js先把{}序列化,在服务器端,解析json字符串还原对象即可。

也就是说,需要tostring(或者叫serialize)的过程。


Update

一般大家都没这样做,是因为这些操作都被上层封装了,甚至是http协议也帮了忙,譬如application/json 的请求头告诉服务器关于这次发送的是个json串的信息。
一般的数据都会被格式化为
?a=b&c=d的形式 填充在req body内
不管是GET还是POST

ringa_lee

请放弃ajax,用fetch,新的原生接口,比ajax更方便使用

var fetchResponse = fetch('/postData', {
    method: 'post',
    headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({ foo: 'bar' })
});

fetchResponse.then((res) => res.json()).then(function(res) {
    // code...
})
怪我咯

转换成键值对才行;当然也可以直接吧json转成字符串提交,到服务器时再编码成数组就行

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号