我很害怕試圖找到解決我的問題的好方法。什麼是序列化數組並傳遞給get方法的最好方法
所以我使用ajax請求傳遞一些數據用於過濾目的。
然後我使用history.js,所以我可以更改網址並向瀏覽器添加一個狀態,從而可以返回,前進等。這樣,我可以使用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);
}
});
}
這會令到這個網址 HTTP請求://本地主機/項目/控制器/ filter_array %5B%5D = 1 & filter_array%5B%5D = 50 & filter_array%5B%5D = 70。
的問題是,我想這個網址傳給history.pushstate
如果我使用,然後jsenconde手工打造的網址,該網址會輕微不同,會是這樣的: HTTP://本地主機/項目/控制器/?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?filter_array = [「1」,「50」,「70」]。
所以我只需要一個解決方案,讓我只是一種類型的GET url,所以我可以使用相同的URL到ajax和普通的請求。
我希望我已經說清楚了..
沒有什麼錯* *使用'[]'在URL中,它只是不與本地PHP比任何其他兼容。但是,如果你在這裏困擾的是['history.pushstate()'](https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history#The_pushState().C2.A0方法),爲什麼不直接存儲數據在'stateObj'中,當你得到一個狀態彈出事件時,檢查這個而不是URL?這樣你就可以使用一個PHP友好的URL,並且仍然可以輕鬆訪問JS中的數據。 – DaveRandom