我想寫一個onClick
事件,它會多次提交一個表單,迭代多選字段中的選定項目,併爲每個字段提交一次。如何在onClick事件中創建循環?
我該如何編碼循環?
我正在Ruby on Rails中工作,並使用remote_function()
爲ajax調用生成JavaScript。
我想寫一個onClick
事件,它會多次提交一個表單,迭代多選字段中的選定項目,併爲每個字段提交一次。如何在onClick事件中創建循環?
我該如何編碼循環?
我正在Ruby on Rails中工作,並使用remote_function()
爲ajax調用生成JavaScript。
我的快速回答(因爲我還沒有編碼它)將創建另一個函數,使用XMLHTTPRequest和單個調用的特定參數創建一個POST。然後在您的onClick()處理程序中,在您循環選定項目時調用該函數。
我會建議你做一個概念驗證只使用虛擬HTML頁面和JavaScript,然後嘗試弄清楚如何讓它在RoR中工作。
此外,爲什麼您試圖從瀏覽器進行多次調用,而不是處理RoR控制器中的循環條件?
您必須手動編寫一些javascript。 Rails的生成器不會爲你做這麼複雜的事情。
儘管Prototype.js會爲你做幾乎所有的繁重工作。關閉我的頭頂,代碼是這樣的:(未經測試)
<%= javascript_include_tag 'prototype' %>
<form id="my-form">
<input type="text" name="username" />
<select multiple="true" id="select-box">
<option value="1">First</option>
<option value="2">Second</option>
<option value="3">Third</option>
<option value="4">Fourth</option>
</select>
</form>
<script type="text/javascript" language="javascript">
submitFormMultipleTimes = function() {
$F('select-box').each(function(selectedItemValue){
new Ajax.Request('/somewhere?val='+selectedItemValue,
{method: 'POST', postBody: Form.serialize('my-form')});
});
}
</script>
<a href="#" onclick="submitFormMultipleTimes(); return false;">Clicky Clicky</a>
注:
使用Prototype的$F()
方法來獲取所選項目的值。它返回一個用於多選框的數組
使用Ajax.Request
將數據作爲POST
發送到服務器。
到服務器上,這看起來完全一樣,只是提交一個正常的形式
使用Form.serialize
獲取數據的表格,並把它貼在請求的身上。
這是,如果你提交的表單通常
除非你修改瀏覽器的DOM將被髮送完全相同的數據,我不能想到的,你會想這樣做的理由。 (但是不知道你想做什麼,在這種情況下我可能是錯的=)
你應該能夠從一個POST中的多個對象(甚至嵌套在表單中的複雜對象)發回數據。
很可能rails代碼比起你想出的任何javascript來說都複雜得多,編寫起來更容易(也更容易調試!)。
如果您需要根據用戶選擇的內容更新頁面的不同部分,仍然可以在render:update模塊中通過RJS對DOM進行多次更新,所以這不應該成爲問題。
您還可以享受只有一次服務器的(大)收益,而不是使用多個POSTS的多次旅行。