这是因为
post_data.myData
是一个对象而不是字符串,它通过
encodeURIComponent
像
[Object object]
。
如果你决心使用
www/form-data
编码时,您将需要一个使用递归的函数来正确地转义复杂对象的所有属性和子属性。
我决不会
suggest
使用jQuery,但它有一个方便的函数,
$.param(obj)
。
否则,您可以只使用JSON:
var jsonString = JSON.encode(complexObject);
编辑:
我需要实现这个功能,所以我不妨在这里分享一下:
/**
* Pack up an object of parameters into something that can be added to a GET
* request.
*
* Example:
* encodeParams({ 'foo': 'bar', 'baz': 'qux' })
* -> "foo=bar&baz=qux"
* @param { [key: string]: any } params - key-value store of string->anything
* @return string URL encoded parameters
*/
var encodeParams = function (params) {
var up = new URLSearchParams;
var addParam = function (prefix, param) {
if (param instanceof Array) {
for (var _i = 0, param_1 = param; _i < param_1.length; _i++) {
var i = param_1[_i];
addParam(prefix + "[]", i);
}
}
else if (param instanceof Object) {
// add like associative array,
// e.g. foo[bar][]=baz&foo[bar][]=qux
for (var i in param) {
if (param.hasOwnProperty(i)) {
addParam(prefix + "[" + i + "]", param[i]);
}
}
}
else {
up.append(prefix, (param == null ? '' : param));
}
};
for (var p in params) {
if (params.hasOwnProperty(p)) {
addParam(p, params[p]);
}
}
return up.toString();
}; // end encodeParams()