2

誰か助けてくれませんか?これが私のjQueryです。シナリオはこれです。すべてのボタンがオンになっているテーブルがあり<td>ます。そのボタンをクリックすると、モーダルウィンドウが表示され、はいまたはいいえの確認ボタンが表示されます。ユーザーが [はい] ( ) をクリックする#confirm_cancelと、これがデータベースに保存され、更新が成功したことをユーザーに通知する警告ボックスが表示されます。問題はこれです.SQLを適切に実行してデータベースに保存しますが、エラー関数に関するアラートボックスが表示されます[object object].

これは私のPHPです:

<?php
include("php/openDB.php"); 

echo '<table border="2" id="tableGuestList">';
echo '<tr>';
    echo '<td>Guest ID</td>';
    echo '<td>Room No:</td>';
    echo '<td>First Name</td>';
    echo '<td>Last Name</td>';
    echo '<td>Checkin</td> ';
    echo '<td>checkout</td>';
    echo '<td>Status</td>';
    echo '</tr>';

    $result = mysql_query("SELECT gi.guest_id, gi.fname, gi.lname, bk.checkin, bk.checkout, bk.transacstatus, bk.reserved_id "
    ."FROM tbl_guestinfo gi, tbl_bookings bk "
    ."where gi.guest_id = bk.guest_id "
    ."AND bk.transacstatus = 'booked'");

    while ($rows = mysql_fetch_array($result, MYSQL_NUM)) {
        $guest_id = $rows[0];

        $fname = $rows[1];
        $lname = $rows[2];
        $checkin = $rows[3];
        $checkout = $rows[4];
        $transacstatus = $rows[5];
        $reservedid = $rows[6];


        echo '<tr id="'.$rows[0].'" class="bookedClass">';
        echo '<td>'.$guest_id.'</td>';
        echo '<td> room number kaara</td>';
        echo '<td> '.$fname.'</td>';
        echo '<td>'.$lname.'</td>';
        echo '<td> '.$checkin.'</td>';
        echo '<td>'.$checkout.'</td>';
        echo '<td> '.$transacstatus.'</td>';

        echo '<td style="display:none"> '.$reservedid.'</td>';

        echo '<td> <input type = "submit" value = "Cancel Booking" name ="cancel_booking" /></td>';

        echo '<td> <input type = "submit" value = "Check in" name ="check_in" /></td>';

        //echo '<td> <input type = "submit" value = "Check Out" name ="Check_Out" /></td>';
        echo '</tr>';
    }

    mysql_free_result($result);

    echo '</table>';

    include("php/closeDB.php");
?>

これは私のjqueryです

 $(document).ready(function(){
    var selGuest;
    $('#tableGuestList .bookedClass').click(function(){
        selGuest = $(this).find("td").eq(7).text();
        selGuest = parseInt(selGuest)
        $('#confirmDialog').fadeIn('slow');
    });

    $('#confirm_cancel').click(function() {
        var canceldata_json = {
            'selGuest': selGuest,
        };
        $.ajax({
            type: "POST",
            data: canceldata_json,
            url: "./php/cancelBooking.php",
            success: function(msg) {
                alert("guest information updated")
                $('#confirmDialog').fadeOut('slow');
            },
            error: function(msg){
                alert(msg)
            }
        });
    });

    $('#cancel_cancel').click(function() {
        $('#confirmDialog').fadeOut('slow');
    });
});

そして、これがAJAXによって呼び出されている私のPHPコードです

<?php

// get data
$selGuest = $_POST["selGuest"];

include("openDB.php");

$insertintoCanceled = "insert into tbl_canceled "
        ."reserved_id, `guest_id`,`checkin`, `checkout`, `type_id`, `numAdults`, `numChildren`, `transacstatus`, `amountDue`"
        ."("
        ."SELECT * FROM `tbl_bookings` where `reserved_id` =" .$selGuest
        .")";
if(!mysql_query($insertintoCanceled, $con))//if it fails
{
    die('Error: ' . mysql_error() . "\n");//show the mysql error
}
include("closeDB.php");
?>
4

3 に答える 3

0

が原因である可能性がありますalert(msg)msgオブジェクトである可能性があり、必要な実際のデータはそのプロパティ値の 1 つです。エラー関数内の Chrome 開発ツールまたは Firebug 内でブレークポイントを設定し、msg含まれている値を調べてみてください。代わりに使用するのと同じくらい簡単かもしれません alert(msg.d)

于 2012-09-20T07:08:52.283 に答える
0

「error:function(msg)」コールバック関数が正しい引数を使用していません。

私は提案します:

error: function(jqXHR, textStatus, errorThrown)
{
    console.log(jqXHR, textStatus, errorThrown); //Check with Chrome or FF to see all these objects and decide what you want to display
    alert('Error! '+textStatus);
}

http://api.jquery.com/jQuery.ajax/

また、PHP エラー ログを調べて、意図したとおりに動作するかどうかを確認してください。

于 2012-09-20T07:10:57.260 に答える
0

「アップロード成功」メッセージだけが必要だと仮定します。

dataType は JSON (サーバーからの応答は JSON 形式) として使うのがベストだと思います。あなたのAJAXでこれを試してください:

$.ajax({
    type: "POST",
    data: canceldata_json,
    dataType:'json',
    url: "./php/cancelBooking.php",
    success: function(msg) {
        alert(msg)
        $('#confirmDialog').fadeOut('slow');
    },
    error:function(msg){
        alert(msg)
    }
});

そしてあなたのphp関数

<?php

// get data
$selGuest = $_POST["selGuest"];

include("openDB.php");

$insertintoCanceled = "insert into tbl_canceled "
    ."reserved_id, `guest_id`,`checkin`, `checkout`, `type_id`, `numAdults`,        `numChildren`, `transacstatus`, `amountDue`"
."("
."SELECT * FROM `tbl_bookings` where `reserved_id` =" .$selGuest
.")";
if(!mysql_query($insertintoCanceled, $con))//if it fails
{
echo json_encode(array('msg'=>'Error')) //error msg goes here
die('Error: ' . mysql_error() . "\n");//show the mysql error

}
echo json_encode(array('msg'=>'Successfully updated')) //success msg goes here
include("closeDB.php");
?>
于 2012-09-20T07:16:36.913 に答える