2011-09-22 33 views
1

首先道歉,如果这很简单,但我已花了数小时的努力和谷歌搜索相当多的搜索我相信我不需要的信息。阿贾克斯帖子从形式的多个变量

好的。所以我所拥有的是一个有14个输入的表单,它使用get查询动态填充。然后用户可以更改检索到的信息的内容,并在完成时按提交更新我们的数据库。我使用的代码工作正常,使用单独的页面和lightbox设置来更新信息,但是我想将更新屏幕集成到主页面中,并使用ajax进行更新,所以对用户来说,页面的其余部分仍然是可见。

目前我已经将我的表格如下:

<table border='1'> 
<form id="Update" onsubmit="return false;"> 
<tr> 
<th>Query</th> 
<th>Result</th> 
<tr/> 
<tr> 
<?php 
while($row = mysql_fetch_array($result)) 
{ 
?> 
<td>Estimating No:</td><td><input name="ID" id="ID" type="text" value="<?php echo $_GET['q']; ?>" /></br></td> 
</tr> 
<tr> 
<td>Date Received:</td><td><input type="text" name="Date_Received" id="Date_Received" value="<?php echo(htmlspecialchars($row['Date_Received'])); ?>" /><br/></td> 
</tr>  
<tr>  
<td>X Ref:</td><td><input name="Xref" id="Xref" type="text" value="<?php echo(htmlspecialchars($row['Xref'])); ?>" /><br/></td> 
</tr> 
<tr> 
<td>Project Name:</td><td><input name="Project_Name" id="Project_Name" type="text" value="<?php echo(htmlspecialchars($row['Project_Name'])); ?>" /><br/></td> 
</tr> 
<tr> 
<td>Location:</td><td><input name="Location" id="Location" type="text" value="<?php echo(htmlspecialchars($row['Location'])); ?>" /><br/></td> 
</tr> 
<tr> 
<td>Project Type:</td><td><input name="Project_Type" id="Project_Type" type="text" value="<?php echo(htmlspecialchars($row['Project_Type'])); ?>" /><br/></td> 
</tr> 
<tr> 
<td>Main Contractor:</td><td><input name="Main_Contractor" id="Main_Contractor" type="text" value="<?php echo(htmlspecialchars($row['Main_Contractor'])); ?>" /><br/>  </td> 
</tr> 
<tr> 
<td>Tender Sum:</td><td><input name="Tender_Sum" id="Tender_Sum" type="text" value="<?php echo(htmlspecialchars($row['Tender_Sum'])); ?>" /><br/></td> 
</tr> 
<tr> 
<td>Tender Return Date:</td><td><input name="Tender_Return_Date" id="Tender_Return_Date" type="text" value="<?php echo(htmlspecialchars($row['Tender_Return_Date'])); ?>" /><br/></td> 
</tr> 
<tr> 
<td>Jbsr Return Date:</td><td><input name="Jbsr_Return_Date" id="Jbsr_Return_Date" type="text" value="<?php echo(htmlspecialchars($row['Jbsr_Return_Date'])); ?>" /><br/></td> 
</tr> 
<tr> 
<td>Contact Name:</td><td><input name="Contact_Name" id="Contact_Name" type="text" value="<?php echo(htmlspecialchars($row['Contact_Name'])); ?>" /><br/></td> 
</tr> 
<tr> 
<td>Contact Number:</td><td><input name="Contact_Tel" id="Contact_Tel" type="text" value="<?php echo(htmlspecialchars($row['Contact_Tel'])); ?>" /><br/></td> 
</tr> 
<tr> 
<td>Contact Email:</td><td><input name="Contact_Email" id="Contact_Email" type="text" value="<?php echo(htmlspecialchars($row['Contact_Email'])); ?>" /><br/></td> 
</tr> 
<tr> 
<td>Project Status:</td><td><input name="Status" id="Status" type="text" value="<?php echo(htmlspecialchars($row['Status'])); ?>" /><br/></td> 
</tr> 
<tr> 
<td></td><td><input type="submit" onClick="sendUpdate()" /></td> 
</tr> 
</form> 

现在我的问题。经过大量搜索后,我发现了一段似乎可行的代码,但它只能用于一个参数。正如你所看到的,我需要一次性发布14,所以它是不好的。我尝试了很多组合来试图让它工作,但无济于事。 的代码是:

<script> 
    function sendUpdate() { 
     new Ajax.Request("MenuUpdate1.php", 
      { 
      method: 'post', 
      postBody: 'ID='+$F('ID'), 
      onComplete: showResponse 
      }); 
    } 

    function showResponse(req){ 
     $('MenuUpdate').innerHTML= req.responseText; 
    } 
</script> 

我真正需要知道的是我怎么能适应上面的代码,让我张贴额外13个输入框。任何帮助将不胜感激,如果你需要我澄清任何问题,请询问。

在此先感谢

艾伦

+0

@clockworkgeek即时通讯仍然主要停留在此。我试着用你的代码尝试体验,当我点击提交应该处理帖子信息的页面的php代码时,返回的错误就像没有发布信息一样。你能帮助我吗? – Burdie87

+0

我猜不出还有什么可能是错的。我可以看到JavaScript上的实时页面吗? – clockworkgeek

回答

0

原型擅长这些各种操作。参考见Ajax.UpdaterForm.serialize

function sendUpdate() { 
    new Ajax.Updater({success: 'MenuUpdate'}, 'MenuUpdate1.php', { 
     parameters: Form.serialize('Update', true) 
    }); 
} 
+0

Hi @clockworkgeek, 对于延迟应答的道歉我已经被绑定在工作中,没有机会正确应用上面的代码。 我试过了代码,但是我的MenuUpdate1.php中的php返回了很多基于未定义变量的错误,这些错误将是我试图发布给它的表单项。 我还可以使用 $ID = $_POST['ID']; $Date_Received = $_POST['Date_Received']; etc. 定义一个变量或做我需要改变我的编码 – Burdie87

+0

在浏览器的控制台(通常是F12键)尝试输入'Form.serialize(“更新”,真)',看看是什么回。它应该是一个具有与每个输入字段匹配的属性的对象。如果不是,那么这是需要修复的位,否则问题在于别处。 – clockworkgeek

+0

任何面向公众的软件都应该清理它的所有输入。而不是'$ ID = $ _POST('ID')'做一些类似'$ ID =(string)(isset($ _ POST ['ID'])?$ _POST ['ID']:'')' – clockworkgeek