将cakephp命名参数添加到列表选择的url中

时间:2012-06-08 02:17:33

标签: php javascript jquery cakephp cakephp-1.3

假设我有一个选择列表如下:

<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

非常感谢任何帮助

谢谢

2 个答案:

答案 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());
});