是否有可能以某种方式将json对象附加到URLSearchParams对象上?在URLSearchParams中使用json对象
所以不是:
urlSearchParams.append('search', 'person');
是:
urlSearchParams.append({search: "person"});
我的回答Darshak号Gajjar的回答礼貌
可以通过这种方式使用JSON对象:
使用JavaScript的香草替代的解决方案:是否有可能以某种方式将json对象附加到URLSearchParams对象上?在URLSearchParams中使用json对象
所以不是:
urlSearchParams.append('search', 'person');
是:
urlSearchParams.append({search: "person"});
我的回答Darshak号Gajjar的回答礼貌
可以通过这种方式使用JSON对象:
使用JavaScript的香草替代的解决方案:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
像这样的东西可能会奏效urlSearchParams = Object.assign(urlSearchParams, {search: "person"});
编辑。另外,我认为URLSearchParams只是一个普通的js对象,但实际上你必须使用get
,set
和append
来访问属性。
var params = new URLSearchParams("a=apple&b=balloon");
var parametersToAdd = {c: "car", d: "duck"};
for(key in parametersToAdd)
params.append(key, parametersToAdd[key]);
console.log(params.get('c'));
console.log(params.get('d'));
编辑二: .append()
支持重新使用相同的密钥/参数名称,而.set()
会覆盖前一个值。
可能是使用下面的代码,你可以在URL搜索PARAM
var json = JSON.stringify(myObj);
this.http.get('url'+'?myobj='+encodeURIComponent(json))
我实际上使用this.http.post,所以它不适用于我:( –
你也可以用同样的方式使用post.http.post('url'+'?myobj ='+ encodeURIComponent(json)) – Darshak
如果我可以标记两个答案,我会标记你的,但另一个答案更适合于问题:( –
有没有API为整个传递JSON对象。你只需要枚举的属性和手动添加它们
function appendParams(params: URLSearchParams, obj: any) {
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
parmas.append(key, obj[key])
}
}
}
appendParams(urlSearchParams, { search: 'person' });
是否可以发送一个数组? –
想与发送Array
的选项分享我的答案Angular2
这是我如何使用这个get
功能:
this.get('/api/database', {
'age': [1,2,3,4]
})
和服务是这样的:
get(url, _params = {}) {
let params = this._processParams(_params);
return this.http.get(url, params).toPromise();
}
_processParams(obj: any) {
/* Convert this
{ age: [1,2,3] }
To:
param.append('age', 1);
param.append('age', 2);
param.append('age', 3);
*/
let params = new URLSearchParams();
for (let key in obj) {
for (let index in obj[key]) {
params.append(key, obj[key][index]);
}
}
return {
search: params
};
}
我试过这个'let search = Object.assign(urlSearchParams,{number:'5'});'但它没有似乎没有工作。 –
我在Chrome控制台中尝试了类似的代码,它工作。你在用什么浏览器? 'let'是一个更新的关键字,所以也许只用var来试试。此外,Object.assign方法在IE中不可用,因为文档 – murtuza
将在明天尝试并根据需要标记 –