所以我使用 ajax 请求来传递一些数据以进行过滤。
然后我使用history.js,这样我就可以更改url并向浏览器添加状态,从而可以返回、前进等。这样,我可以使用ajax请求或普通请求过滤我的数据。到现在为止还挺好。
我的问题是,在我通过 ajax 请求传递的数据中有一个数组:
function updateContent(url, state) {
$.ajax({
type: 'GET',
data: {name: state.filter_name, num: state.filter_number,
data: state.filter_data, array: state.filter_array},
url: url,
success: function(msg) {
$('#ajax').html(msg);
}
});
}
这将向此 URL 发出请求:
http: //localhost/Project/Controller/?filter_array%5B%5D=1&filter_array%5B%5D=50&filter_array%5B%5D=70.
我想将此网址传递给 history.pushstate
如果我使用 jsenconde 然后手动构建 url,则 url 会略有不同,类似于:
http://localhost/Project/Controller/?filter_array=["1","50","70"]
虽然它更干净,但我在某处读到你不应该在 url 中使用 [] 但即使我使用这种方式,我也会得到两种类型的 GET url,即 ajax URL?filter_array%5B%5D=1&filter_array%5B%5D=50&filter_array%5B%5D=70.
和 json 网址?filter_array=["1","50","70"]
。
所以我只需要一个解决方案,让我只有一种类型的 GET url,所以我可以使用相同的 url 到 ajax 和正常请求。