我有一個帶有多個元素的html表單。現在,特別是我希望您關注的是兩個Dropbox,除此之外還有一個「添加」按鈕。因此,一旦用戶從下拉列表中選擇並按下「添加」按鈕,它就會將數據添加到表格中,然後該表將顯示在這些下拉框下方。因此,基本上用戶可以通過下拉列表添加多個數據並在表格中查看它。現在,當表單提交時,我想從該表中檢索數據時出現問題。我不確定$ _PHP ['']是否可以從我創建的表中獲取數據。提交表單提交客戶端HTML表格數據到服務器端PHP腳本
因此,作爲替代方案,我試圖在表單提交時使用AJAX傳遞數據!
HTML:
<form name="input" id="formToSubmit" action="process-host.php" method="post" enctype="multipart/form-data">
/* Form data goes here*/
<input type="button" class="submit" value="Submit Request" onclick="valField(this.form); "/>
valField()方法驗證 並提交表單。
JS:
function valField(form) //field validation for the form before submit
{
/*Validation code goes here*/
//if(validated){
$("#formToSubmit").submit(function(e) { //this.submit(function(e)){
e.preventDefault();
var tableForNew = new Array(); //to store the infoDisplayTable data
$('#infoDisplayTable1l tr').each(function() {
tableForNew.push($(this).find("td:first").html());
tableForNew.push($(this).find("td:second").html());
});
// Get all INPUT form data and organize as array
var formData = $(this).serializeArray();
// Encode with JSON
var tableForNew1 = JSON.stringify(tableForNew);
// Add to formData array
formData.push({name: 'tableForNew', value: tableForNew1});
// Submit with AJAX
$.ajax({
url: "./process-host.php",
data: formData,
type: 'post',
success: function() {
alert("BOOM! IT WORKED;");
}
});
});
在服務器端,在過程host.php,
$tableForNew = json_decode($_POST['tableForNew']);
這顯然是不工作了,所以當我使用Firebug的調試,我可以看到它不在提交函數中。它只是提交表單,而不需要通過內部代碼!這就是爲什麼它不發佈任何表數據到服務器,並給出錯誤通知未定義的索引:tableForNew。
那麼,我能在這裏做些什麼來使它工作?有什麼建議麼?
你不需要爲此使用AJAX。如果您將字段添加到表單中,則在您提交表單時將會發送這些字段。就瀏覽器而言,初始源代碼中的元素與使用Javascript添加的元素沒有區別。 – Barmar
那麼,我將如何訪問表中的數據?導致$ _POST ['infoDisplayTable1l']不會鍛鍊! –
將數據放在窗體的隱藏輸入字段中。 – Barmar