Javascript 将逗号分隔的值作为搜索参数附加到url
如何使用history.pushsate将逗号分隔的值作为搜索参数附加到url。使用RFC 3986时,指定URI路径组件不应包含未编码的保留字符,逗号是这些保留字符之一 代码 window.history.pushState('new','inventory','/new') 期望结果 我想附加的数据Javascript 将逗号分隔的值作为搜索参数附加到url,javascript,jquery,node.js,ajax,Javascript,Jquery,Node.js,Ajax,如何使用history.pushsate将逗号分隔的值作为搜索参数附加到url。使用RFC 3986时,指定URI路径组件不应包含未编码的保留字符,逗号是这些保留字符之一 代码 window.history.pushState('new','inventory','/new') 期望结果 我想附加的数据 将JSON数据解析为JS对象,并根据需要解析键和值。我认为没有任何方法可以完全实现您想要的字符串格式,除非有人为这种情况编写了一个npm包(不是将json对象深度嵌套到查询字符串中) 使用和基于
将
JSON
数据解析为JS
对象,并根据需要解析键和值。我认为没有任何方法可以完全实现您想要的字符串格式,除非有人为这种情况编写了一个npm
包(不是将json对象深度嵌套到查询字符串中)
使用和基于JSON
输入构建查询字符串
我已经做了一个计划来看看。您仍然需要对货币进行一些解析,也许还需要更多
如果REPL链接不起作用,请参见下文
常量json=`
{
“年”:[
"2017",
"2018"
],
“模型”:[
“逃跑”,
“边缘”
],
“里程”:[
"1-1000"
],
“车身风格”:[
“可兑换”,
“4dr汽车”,
“2dr汽车”
],
“价格范围”:[
"$20,000-$30,000",
"$30,000-$40,000"
]
}`;
const parsedJson=JSON.parse(JSON);
设queryString='?';
Object.entries(parsedJson).forEach(([key,value],index)=>{
让string=`${index!=0?'&':''}${key}=${value.join()}`;
queryString+=字符串;
});
const encodedQueryString=encodeURIComponent(queryString.trim())
似乎重复数组值,因此您必须找到一些现有库或编写自定义函数
类似于此(但可能会进一步优化):
/**
*准备URL的“搜索”部分。
*@param{object}o每个键都是一个参数名,value是一个值数组
*@return{string}
*/
函数createURLQuery(o){
返回对象。键(o)
.map(键=>`${encodeURIComponent(键)}=`
+o[key].map(v=>encodeURIComponent(v)).join(','))
.join(“&”)
}
//示例代码
常数数据={
“年”:[
"2017",
"2018"
],
“模型”:[
“逃跑”,
“边缘”
],
“里程”:[
"1-1000"
],
“车身风格”:[
“可兑换”,
“4dr汽车”,
“2dr汽车”
],
“价格范围”:[
"$20,000-$30,000",
"$30,000-$40,000"
]
};
const newURL=`/new?${createURLQuery(数据)}`;
log('pushingnewurl',newURL);
//window.history.pushState('new','inventory',newURL)代码>为什么您不能在请求正文中对上面的子进行pst请求?
??我认为他试图实现的是将这些数据附加到“/new”中,以便结果像新的一样?Year=20202019&Pricerange=10001-200002000。。。。根据数据,您是否尝试过window.history.pushState('new'、'inventory'、'/new?Year=20202019&Pricerange=10001-2000020001-300003001-40000&milleangerange=1001-20002001-3000&Bodystyle=4dr%20Car,敞篷车)
?你的URL中的逗号不是路径组件的一部分,它们是搜索组件的一部分,所以它们是有效的。但我认为他想要实现的是动态的东西,你所说的“动态”是什么意思?需要整个URL字符串,所以如果你想动态构造它,你必须根据你的数据格式编写一个函数来实现。我试过使用我不太熟悉的jQuery,但肯定有一种方法可以用jQuery实现。我上面描述的方法肯定会奏效。发布你的答案吧,你发布的没有实际用途,只是把它作为评论,然后我添加了一个例子。
https://www.test.com/new?Year=2020,2019&Pricerange=10001-20000,20001-30000,30001-40000&Mileagerange=1001-2000,2001-3000&Bodystyle=4dr%20Car,Convertible
{
"year": [
"2017",
"2018"
],
"model": [
"Escape",
"Edge"
],
"mileage": [
"1-1000"
],
"bodyStyle": [
"Convertible",
"4dr Car",
"2dr Car"
],
"priceRange": [
"$20,000-$30,000",
"$30,000-$40,000"
]
}