2012-06-08 104 views
2

比方說,我有一個選擇列表如下:加CakePHP的命名參數的URL在列表中選擇

<select name='languages'> 
    <option value='german'>German</option> 
    <option value='english'>English</option> 
</select> 

我如何,使用JavaScript/jQuery的刷新頁面,當用戶選擇的語言並添加Named parameter style參數,每個用戶smakes選擇時間我的網址的結尾,例如,如果用戶選擇德國,URL應該是這樣的:

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 

因此,每次用戶進行選擇時,都會使用在url結尾處添加的命名參數來刷新同一頁面。

注意:我想命名參數出現每個請求只有一次,換句話說,我不希望他們在喜歡的網址的結尾重複:

http://my_app/my_controller/my_action/language:select_option_value_for_german/language:select_option_value_for_english 

任何幫助非常讚賞

謝謝

回答

3

在你的js文件聽取您的選擇更改事件,並建立鏈接,並導航到內置的URL。

$('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> 
+0

不工作,已命名的參數在最後每次我做出選擇疊起來,另外,選擇是在頁面刷新後不保存在列表中 – user765368

+0

請顯示您的代碼。 – Bob

+0

我的代碼在那裏 – user765368

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