我有大約70個輸入字段的大表單,並且在表單中有可以創建其他輸入字段的按鈕。我的問題是,如果服務器上的某些內容在提交表單時出錯,如數據庫插入失敗,我該如何保留這些輸入字段及其值?我有動態驗證,但如果提交時出現錯誤怎麼辦?如何在數據庫失敗時保留動態創建的輸入字段值?
3
A
回答
4
您有很多選擇。
- 你可以使用AJAX來發表您的形式,如果成功,則重定向到一個新的頁面,或提醒用戶,如果沒有(簡單!)
- 你可以從後重建從服務器端變量(更復雜的形式)
- 服務器可能在失敗時發送表單值,並且您可以編寫JS來重新創建表單(如果您已經有JS來管理表單,可能會很容易)。
- 您可以將表單的實際HTML與表單值一起傳遞,並讓服務器使用它來重新創建表單(根據您掛鉤的方式,您可能會失去JS事件,而不是通常的最佳選項)。
還有很多不太有用的選項。我會推薦#1。
+1
我也在考慮做一個阿賈克斯帖子。我認爲這是最好和最簡單的方法。 – u54r
1
對於一個真正簡單的解決方案:
您可以將值存儲在一個對象,只有當你已經有了一個證實DB插入清除它。如果插入失敗,您可以重試幾次,如果重複失敗,可以將值寫入CSV日誌文件以手動處理。
更復雜的解決方案
隊列。讓所有插入請求都使用Zend Jobserver,RabbitMQ或Gearman將隊列放入作業隊列中。然後創建一個工作進程以在隊列的另一端運行插入。這將允許您重新運行/重試失敗的作業。
0
爲什麼在單個頁面上有這麼多字段?我會重新考慮這樣做。無論如何,如果您有服務器端驗證,並且失敗,您可以設置頁面,讓每個字段使用基於發送到服務器的發佈值的默認值...因此,只需將它們發回到同一頁面並將輸入字段值設置爲後期值。
這裏是一個例子。
$username = array(
'name' => 'username',
'id' => 'username',
'maxlength' => '255',
'size' => '28',
'title' => 'username is required.',
'class' => 'form-text required',
'value' => $this->input->post('username'),
);
<?php echo form_input($username); ?>
0
這裏有一對夫婦的功能,你可以用它來形式值存儲在一個會話:
//save form inputs
function Hold_Form_Input()
{
$FormPost = array();
foreach ($_POST as $key => $entry)
{
$FormPost[''.$key.'']= $entry;
}
$_SESSION['post_form']= $FormPost;
}
//Clear form values upon success
function Clear_Form_Input()
{
if (isset($_SESSION['post_form']))
{
unset($_SESSION['post_form']);
return true;
}
return false;
}
//Reprint form values as needed
function Keep_on_error($fieldname)
{
if(isset($_SESSION['post_form']) && strlen($_SESSION['post_form'][$fieldname]) > 0)
{
$fill = $_SESSION['post_form'][$fieldname];
return $fill;
}
return false;
}
相關問題
- 1. 輸入動態字段到mysql數據庫失敗
- 2. 動態添加輸入字段後保留輸入值
- 3. 驗證失敗時如何保留文件字段值
- 4. 使用數據庫中的值和列名動態創建輸入字段
- 5. 在驗證數據失敗時保留表單字段中的值
- 6. 如何在Jeditable ajax發佈失敗時保留用戶輸入數據
- 7. 當創建新的輸入元素時,動態添加的輸入元素不會保留輸入數據
- 8. 如何在動態gridview中保留錯誤的字段值?
- 9. JavaScript-如何在輸入字段中動態創建多個div
- 10. 如何設置動態創建的輸入字段的ID?
- 11. 使用jQuery更改動態創建的輸入字段的值
- 12. 如何在jqgrid編輯失敗時保留數據
- 13. 如何在數據庫中保存動態創建的模板?
- 14. 頁面刷新時在輸入字段中保留值
- 15. Angular - 在用戶登錄時保留值輸入字段
- 16. 將動態文本框字段值插入數據庫?動態創建mysql字段?
- 17. 如何用保留字節創建數據庫?
- 18. 自動完成動態輸入字段失敗
- 19. 保留在文本字段中輸入的數據
- 20. 如果交易失敗,保留數據?
- 21. 如何在使用C#動態創建時保留StateManagedCollection?
- 22. 如何在驗證保留輸入表格值失敗的Spring MVC
- 23. 創建動態數據輸入表格
- 24. PHP數據庫表的創建失敗
- 25. 無法動態創建jquery php codeigniter中創建的輸入字段值
- 26. 在Symfony中保存數據庫時,如何保留updated_at日期字段?
- 27. 如何動態刪除使用JavaScript動態創建的輸入字段
- 28. 如何把動態填充數字到輸入值字段
- 29. 如何強制用戶在數據庫字段中輸入值
- 30. 如何動態創建動態庫中的mysql數據庫
嗯,因爲只有你知道你的形式最好的,你覺得呢?可以做些什麼來解決這個問題?如果在數據庫操作成功之前您不會首先銷燬表單?允許用戶在失敗的情況下重試提交數據? – hakre
所以,你想說使用ajax後? – u54r
我沒有讀過您使用javascript來動態構建表單的問題。最簡單的做法是將它轉換爲ajax請求,然後用jquery提交,而且我認爲你會這樣做。如果你還沒有這樣做,我建議你改變它,因爲這是一個非常簡單的方法來處理這個問題。 – hakre