假设我有一个选择列表如下:
<select name='languages'>
<option value='german'>German</option>
<option value='english'>English</option>
</select>
当用户选择语言时,javascript / jQuery如何刷新页面,并在每次用户点击选项时将Named parameter style参数添加到我的网址末尾,例如,如果用户选择德语,网址应该是这样的:
http://my_app/my_controller/my_action/language:select_option_value_for_german
如果用户选择英语,则网址为:
http://my_app/my_controller/my_action/language:select_option_value_for_english
因此,每次用户进行选择时,都会刷新同一页面,并在网址末尾添加命名参数。
注意:我希望命名参数每个请求只出现一次,换句话说,我不希望它们在网址末尾重复,如:
http://my_app/my_controller/my_action/language:select_option_value_for_german/language:select_option_value_for_english
非常感谢任何帮助
谢谢
答案 0 :(得分:3)
在您的js文件中,在您的选择中收听更改事件并构建网址并导航到构建的网址。
$('select[name="languages"]').change(function(){
var url ="/my_app/my_controller/my_action/language:" + $(this).val();
window.location = url;
});
使用默认值更改选择框,以便在每次刷新时选择德语。我没注意到每次刷新默认值都是德语,这就是为什么你总是得到英语
<select name='languages'>
<option>Select language</option>
<option value='german'>German</option>
<option value='english'>English</option>
</select>
答案 1 :(得分:0)
$('select[name="language"]').on('change', function() {
var pn = window.location.protocol +
window.location.hostname +
window.location.pathname +
window.location.hash;
window.location.assign(pn + '?language=' + $(this).val());
});