我有一個物件,我需要將它傳遞給 ajax 請求。
advanceSearch(e, field) {
this.searchString.push({
[field] : e
});
let q = new URLSearchParams(this.searchString).toString();
// this.searchTerm = e;
http.get('projects/search/' q)
.then( ( response ) => {
console.log( response )
})
.catch( ( error ) => {
});
},
這thissearchString是一個物件陣列。我需要將此物件陣列傳遞給 URL。所以,我正在使用URLSearchParams但收到此錯誤訊息:
TypeError: Failed to construct 'URLSearchParams': The object must have a callable @@iterator property
uj5u.com熱心網友回復:
我想你不明白 URLSearchParams 的功能。在這里,這個函式做了什么:
const paramsString = "myquery=value&topic=api"
const searchParams= new URLSearchParams(this.searchString)
// Convert the string into a URLSearchParams, this allow multiples methods on it.
有了它,您可以應用多個功能,常見的是這樣使用它:
// const searchParams= new URLSearchParams(this.searchString)
for (let p of searchParams) {
console.log(p);
}
Output:
- ['myquery', 'value']
- ['topic', 'api']
相對于https://developer.mozilla.org/fr/docs/Web/API/URLSearchParams
如果我看到你的代碼,你想要的正好相反。
你可以很容易地這樣做:
const paramsString = {
myquery: 'value',
topic: 'api'
}
Object.entries(paramsString).map(params => `${params[0]}:${params[1]}`).join('&')
// Object entries define a value and a key. You map on that and got params[0] wich is a key and params[1] the value.
// In map you return a string and receive a array with ['key:value']
// You join all array to convert in a string and set a & between
output:
- 'myquery:value&topic:api'
使用物件陣列:
const paramsString = [{ id : 1 }, { brand : 'bata' }, { price : 123} ]
const result = paramsString
.map((params) =>
Object.entries(params).map(
(keyValue) => `${keyValue[0]}:${keyValue[1]}`
)
)
.join('&')
// You got each object on map
// Convert him to key & value like before and return a array with string
// Join each array with '&'
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/522429.html
下一篇:如何將Vue組件加載到表格的行中
