这是我想出的解决方案。首先,我们需要加载的页面加载自锚AJAX参数:
$(document).ready(function() {
if (window.location.hash.indexOf('#?') == 0) {
var hashParameters = window.location.hash.substring(2).split('&');
var hashIndex = 0;
for (var i = 0; i < hashParameters.length; i++) {
var hp = hashParameters[i]
var delim = hp.indexOf('=');
var key = hp.substring(0, delim);
var value = hp.substring(delim + 1);
addParameter();
$('#parameter-' + i + '-key').val(key);
$('#parameter-' + i + '-value').val(value);
}
} else {
addParameter();
$('#parameter-0-key').val('id');
}
});
addParameter()是添加AJAX参数页面视觉上的方法,然后我更新它的值。
然后,它只是一个建立锚点,并将其设置回URL的事情:
function getParameterValues() {
// ...
var anchor = '';
for (var i = 0; i < index + 1; i++) {
var keyName = '#parameter-' + i + '-key';
var valueName = '#parameter-' + i + '-value';
var key = $(keyName).val();
var value = $(valueName).val();
if (typeof key == 'undefined' || typeof value == 'undefined') {
continue;
}
if (key == '') {
continue;
}
// ...
if (anchor.length == 0) {
anchor += '?' + key + '=' + value;
} else {
anchor += '&' + key + '=' + value;
}
}
window.location.hash = '#' + anchor;
return values;
}
这将是很好,如果jQuery的曾经与一个方法来添加/删除参数,如URL上来这本身。