при изменении выберите отправить форму, но проигнорируйте результат - jquery / php - PullRequest
2 голосов
/ 10 марта 2011

Я создаю систему счетов для клиента и хотел бы дать им возможность изменять статус заказа и статус оплаты заказа, выбирая их из выпадающего списка.

Формы

    <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 ]

1 голос
/ 10 марта 2011

См. http://api.jquery.com/change/, чтобы узнать, как вызвать javascript при изменении раскрывающегося меню.

Что касается сообщения jquery, основная причина использования этого - выполнение вызова AJAX.,Что бы вы ни делали, вы не хотите игнорировать результат.Ваш скрипт всегда должен возвращать сообщение об ошибке или об успешном завершении.

0 голосов
/ 10 марта 2011

конечно, используйте change () вот так:

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

и добавьте id="orderStatus" в раскрывающийся список статуса заказа

0 голосов
/ 10 марта 2011

Сначала дайте ваши формы и выберите идентификаторы следующим образом:

 <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, чтобы вы могли обрабатывать ответ от сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...