2011-03-09 42 views
2

我正在爲客戶建立一個發票系統,並希望讓他們能夠通過從選擇下拉列表中選擇它們來更改訂單的訂單狀態和付款狀態。更改選擇提交表單,但忽略結果 - jquery/php

的形式

<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。後/),但我不知道如何實現它。

/////編輯

好的,我找到了解決辦法。

我改變 「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> 
+0

然後我用http://stackoverflow.com/questions/536502/how-can-i-淡出-a-div-using-jquery淡出結果信息 – 2011-03-09 23:50:55

回答

1

http://api.jquery.com/change/找出如何在更改下拉菜單時觸發JavaScript。

至於jquery的帖子,使用這個的主要原因是進行AJAX調用。無論你做什麼,你都不想忽視結果。您的腳本應始終返回錯誤或成功消息。

0

首先給你的表格,並選擇IDS像這樣:

<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函數,所以你可以處理來自服務器的響應。

+0

謝謝,但我發現另一種使用加載的方式,請參閱編輯的文章 – 2011-03-09 23:40:35

0

肯定的是,使用change()這樣的:

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

,並添加id="orderStatus"到訂單狀態下拉