【发布时间】:2012-06-27 07:04:30
【问题描述】:
所以我使用 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.
我想将此 url 传递给 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 url @987654326 @。
所以我只需要一个解决方案,让我只获得一种类型的 GET url,这样我就可以使用相同的 url 进行 ajax 和正常请求。
【问题讨论】:
-
在 URL 中使用
[]并没有什么错误,它只是与 PHP 以外的任何东西不兼容。但是,如果您在这里烦恼的是history.pushstate(),为什么不将数据存储在stateObj中并在收到状态弹出事件时检查它而不是URL?这样,您可以使用 PHP 友好的 URL,并且仍然可以轻松访问 JS 中的数据。
标签: php jquery ajax codeigniter history.js