【问题标题】:on change select submit form but ignore result - jquery / php在更改选择提交表单但忽略结果 - jquery / php
【发布时间】:2011-07-12 07:44:42
【问题描述】:

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

表格

    <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/) 但我不知道如何实现它。

/////编辑

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

我将“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>

【问题讨论】:

标签: php jquery ajax select


【解决方案1】:

当然,像这样使用change()

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

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

【讨论】:

    【解决方案2】:

    首先给出你的表单并选择像这样的 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 函数的信息,以便您可以处理来自服务器的响应。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-02
        • 2011-10-31
        • 2014-12-10
        • 1970-01-01
        • 1970-01-01
        • 2015-07-05
        • 2021-06-27
        • 2017-01-30
        相关资源
        最近更新 更多