在更改选择提交表单但忽略结果 - jquery / php

时间:2011-03-09 23:02:57

标签: php jquery ajax select

我正在为客户建立发票系统,并希望通过从选择下拉菜单中选择订单来更改订单状态和付款状态。

表格

    <form action="changestatus.php" method="post">
    <input type="hidden" name="status" value="order"/>
    <input type="hidden" name="orderid" value="33"/>
    <select name="orderstatus">
        <option value="Complete">Complete</option>
        <option value="Incomplete">Incomplete</option>
    </select>
    </form>
    <form action="changestatus.php" method="post">
    <input type="hidden" name="status" value="payment"/>
    <input type="hidden" name="orderid" value="33"/>
    <select name="paymentstatus">
        <option value="Complete">Complete</option>
        <option value="Incomplete">Incomplete</option>
    </select>
    </form>

changestatus.php

<?php
switch($_POST['status'])
{
case"payment":  
        mysql_query("UPDATE orders SET payment_status = '$_POST[paymentstatus]' WHERE ID = '$_POST[orderid]'")or die(mysql_error());
break;
case"order":    
        mysql_query("UPDATE orders SET order_status = '$_POST[orderstatus]' WHERE ID = '$_POST[orderid]'")or die(mysql_error());
break;
}

?>

我想我可以使用jquery.post()(http://api.jquery.com/jQuery.post/),但我不知道如何实现它。

///// EDIT

好的,我找到了解决方案。

我更改了“changestatus.php”以接受GET变量

   <?php
include"../inc/config.php";
switch($_GET['status'])
{
case"payment":  
        $query = mysql_query("UPDATE orders SET payment_status = '$_GET[paymentstatus]' WHERE ID = '$_GET[ID]'")or die(mysql_error());
        if($query){echo"Saved";}else{echo"Not Saved";};
break;
case"order":    
        $query = mysql_query("UPDATE orders SET orderStatus = '$_GET[orderstatus]' wHERE ID = '$_GET[ID]'")or die(mysql_error());
        if($query){echo"Saved";}else{echo"Not Saved";};
break;
}

?>

然后将表单更改为

    <select name="orderstatus">
        <option value="Complete">Complete</option>
        <option value="Incomplete">Incomplete</option>
    </select>


    <select name="paymentstatus">
        <option value="Complete">Complete</option>
        <option value="Incomplete">Incomplete</option>
    </select>

最后是javascript

<script>
$(document).ready(function() {


$('#paymentstatus').change(function() {
    url = "changestatus.php?ID=<?php echo $_GET['ORDERID'];?>&status=payment&paymentstatus="+$('#paymentstatus').val();
  $("#payment_status_result").load(url)
});
$('#orderstatus').change(function() {
    url = "changestatus.php?ID=<?php echo $_GET['ORDERID'];?>&status=order&orderstatus="+$('#orderstatus').val();
  $("#order_status_result").load(url)
});
});
</script>

3 个答案:

答案 0 :(得分:1)

请参阅http://api.jquery.com/change/,了解如何在更改下拉菜单时触发javascript。

至于jquery帖子,使用它的主要原因是进行AJAX调用。无论你做什么,你都不想忽视结果。您的脚本应始终返回错误或成功消息。

答案 1 :(得分:0)

首先提供表单并选择ID如下:

 <form action="changestatus.php" method="post" id="orderStatusForm">
 <form action="changestatus.php" method="post" id="paymentStatusForm">
 <select name="orderstatus" id="orderstatus">
 <select name="paymentstatus" id="paymentstatus">

然后在脚本中添加更改观察器:

var changeOrderStatus = function(){
     $.post("changestatus.php", $("#orderStatusForm").serialize());
}

var changePaymentStatus = function(){
     $.post("changestatus.php", $("#paymentStatusForm").serialize());
}

$('#orderstatus').change(changeOrderStatus);
$('#paymentstatus').change(changePaymentStatus);

这应该让你开始,然后阅读更多关于jQuery AJAX函数,以便你可以处理来自服务器的响应。

答案 2 :(得分:0)

当然,请像这样使用change()

$("#orderStatus").change(function() { /* post() your form here */ });

并将id="orderStatus"添加到订单状态下拉列表