我有一个带有多个元素的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