Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将逗号分隔的值作为搜索参数附加到url_Javascript_Jquery_Node.js_Ajax - Fatal编程技术网

Javascript 将逗号分隔的值作为搜索参数附加到url

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对象深度嵌套到查询字符串中) 使用和基于

如何使用history.pushsate将逗号分隔的值作为搜索参数附加到url。使用RFC 3986时,指定URI路径组件不应包含未编码的保留字符,逗号是这些保留字符之一

代码 window.history.pushState('new','inventory','/new')

期望结果 我想附加的数据
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"
  ]
}