私はこれに対する解決策を見つけ、将来同じ問題を他の人が克服するのを助けることを希望しています。
HTML
<select id="region" name="region" multiple>
<option value="1">Region 1</option>
<option value="2">Region 2</option>
<option value="3">Region 3</option>
</select>
<select id="maps" name="maps[]" multiple>
<option value="1">Map 1</option>
<option value="2">Map 2</option>
<option value="3">Map 3</option>
</select>
<button id="search">Search</button>
はJavaScript
<script>
$(function() {
$("#search").click(function() {
var params = {};
var getSelect = ['region', 'maps'];
$.each(getSelect, function(index, value) {
var select = $('#' + value);
if (select.val() != '') {
var selected = select.val();
if (select.attr('multiple'))
selected = selected.join(',');
params[value] = selected;
}
});
if (!$.isEmptyObject(params)) {
var url = [location.protocol, '//', location.host, location.pathname].join('');
window.location.href = url + '?' + $.param(params);
}
});
});
</script>
フォームを表示する場合、それが役立つだろうが、現在の設定で、サーバー側で、あなたは '$ _GETで終わる必要があります['maps'] = [1,2,3] '$ _GET ['maps'] [1]'のような変数にアクセスしたくない理由がありますか? – DelightedD0D
@ DelightedD0D私の質問は、URLを短縮し、不要なキー値のペアを削除する試みの多くですが、機能的にはうまく機能します。このフォームは、単一のselect入力と複数のselect入力を持つ基本的なGET形式です(http://pastebin.com/3EKCF6Bb)。 – Jack
どのような理由でURLを短縮したいですか?フォームからPOSTメソッドを使用するだけで、URLから完全にパラメータを削除することができます – DelightedD0D