前端要把一个对象通过post方法传递给服务器,应该怎么处理这个对象?

不借助jquery这种框架。数据对象也不是通过表单得来的。
这种情况下:只能自己手写,把对象序列化查询字符吗?
例如:
{
key1:'apple',
key2:'banana'
}
转换成:
'key1=apple&key2=banana'这种字符串,然很放到请求体里?

阅读 6.4k
4 个回答
var postData = '';
for(var i in data){
    postData += i + '=' + data[i] + '&';
}
var len = postData.length;
postData = postData.substring(0,(len -1));
console.log(postData);

改进一下

var postData = [];
for(let key in data){
    postData.push(`${encodeURIComponent(key)}=${encodeURIComponent(data[key])}`);
}
postData = postData.join('&');

推荐使用qs,想怎么转怎么装。
var str = qs.stringify(obj);

楼上提醒的好,还是要encodeURIComponent一下……

function stringify(obj) {
  var ps = [];
  for (var k in obj) {
    // 只转译obj自身成员
    // if (obj.hasOwnProperty(k)) {
      ps.push(k + '=' + obj[k]);
    // }
  }
  return ps.join('&');
}

JSON.stringify

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏