更改选择提交表单,但忽略结果 - jquery/php
问题描述:
我正在为客户建立一个发票系统,并希望让他们能够通过从选择下拉列表中选择它们来更改订单的订单状态和付款状态。更改选择提交表单,但忽略结果 - 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>
答
见http://api.jquery.com/change/找出如何在更改下拉菜单时触发JavaScript。
至于jquery的帖子,使用这个的主要原因是进行AJAX调用。无论你做什么,你都不想忽视结果。您的脚本应始终返回错误或成功消息。
答
首先给你的表格,并选择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
答
肯定的是,使用change()这样的:
$("#orderStatus").change(function() { /* post() your form here */ });
,并添加id="orderStatus"
到订单状态下拉
然后我用http://stackoverflow.com/questions/536502/how-can-i-淡出-a-div-using-jquery淡出结果信息 – 2011-03-09 23:50:55