Ajax Post Несколько переменных из формы - PullRequest
1 голос
/ 22 сентября 2011

Во-первых, извините, если это действительно просто, но я потратил часы, пытаясь, и довольно много Google ищет информацию, которая, как мне кажется, мне не нужна.Итак, у меня есть форма с 14 входами, которая динамически заполняется с помощью запроса get.Затем пользователь может изменить содержимое полученной информации и после завершения нажать кнопку отправить, чтобы обновить нашу базу данных.Код, который я использовал, работал нормально, используя отдельные страницы и настройку лайтбокса для обновления информации, однако я хотел интегрировать экран обновления в главную страницу и использовать ajax, чтобы сделать сообщение об обновлении, чтобы пользователю остальная часть страницы все еще оставалась.visible.

В настоящее время у меня есть следующее для моей формы:

<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 полей ввода.Любая помощь будет высоко ценится, и если вы хотите, чтобы я что-то прояснил, пожалуйста, спросите.

Заранее спасибо

Алан

1 Ответ

0 голосов
/ 22 сентября 2011

Прототип превосходит при подобных операциях. Для справки см. Ajax.Updater и Form.serialize.

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