2011-09-22 65 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