-1

我知道我以前问过这个问题,但我仍然需要帮助,基本上:

我有一个预订网格,如下所示,位于 bookings.php

在此处输入图像描述

在这个预订网格上,我有一个 dblClick 事件:

    ondblClickRow: function(rowid)
    {

        rowData = $("#bookings").getRowData(rowid);
        var brData = rowData['bookref'];

        getGridRow(brData);

        $("#cp-bookings-dialog").dialog({ hide: 'slide', height: 625, width: 733, title: 'Booking Reference: - '+ brData});
    },

这也会在 bookings.php 上打开一个 Jquery Dialog 窗口:

<div class="cp-tiles-wrapper-dlg">

<div class="cp-booking-info left">

<p class="pno-margin">Booking Date: &nbsp;<strong>Booking Reference is = <? echo BookingDocket::get_bookref(); ?></strong></p>
<p class="pno-margin">Return Date: &nbsp;<strong><? echo BookingDocket::get_bookdate(); ?></strong></p>
<p class="pno-margin">Journey: &nbsp;<strong></strong></p>
<p class="pno-margin">Passenger Tel: &nbsp;<strong></strong></p>
<p class="pno-margin">E-mail: &nbsp;<strong></strong></p>

</div>

</div>

其中 brData 是我想在我的 PHP 脚本中使用的“预订参考”值。目前这个 dblClick 事件被发送到以下 Ajax 请求:

function getGridRow(brData) {

   $.ajax({

    url: 'scripts/php/bootstrp/all.request.php',
    type: 'POST',

    data: {

        fnme: 'getDGRow',
        rowdata: brData,

        id: null,
        condition: null
    },
    dataType: 'text/xml',
    timeout: 20000,
    error: function(){
        alert("It failed");
        $('#cp-div-error').html('');
        $('#cp-div-error').append('<p>There was an error inserting the data, please try again later.</p>');
        $('#cp-div-error').dialog('open');
    },
    success: function(response){

        // Refresh page

        //response = brData;
        //alert(response); <-- This alerts the correct Booking Reference value

    }
});

哪个被发送到 all.request.php

// Switch to determine method to call
switch ($_REQUEST['fnme']) {

case 'getDGRow':
header('Content-type: text/xml');
GetBookings::getGridRow($_REQUEST['rowdata']);
break;

最后到我想使用这个 Jquery 值的 PHP 脚本:

class GetBookings {

public static function getGridRow($rowdata) {

$pdo = new SQL();
$dbh = $pdo->connect(Database::$serverIP, Database::$serverPort, Database::$dbName, Database::$user, Database::$pass);

try {

    $query = "SELECT * FROM tblbookings WHERE bookref = '$rowdata'";

    //echo $query; <-- this passes the correct Booking Reference to £rowdata

    $stmt = $dbh->prepare($query);

    $stmt->execute();

    $row = $stmt->fetch(PDO::FETCH_BOTH);

       BookingDocket::set_id($row['id']);
       BookingDocket::set_bookref($row['bookref']);
       BookingDocket::set_bookdate($row['bookingdate']);
       BookingDocket::set_returndate($row['returndate']);
       BookingDocket::set_journeytype($row['journeytype']);
       BookingDocket::set_passtel($row['passengertel']);
       BookingDocket::set_returndate($row['returndate']);



    $stmt->closeCursor();

}

catch (PDOException $pe) {
    die("Error: " .$pe->getMessage(). " Query: ".$stmt->queryString);
}

$dbh = null;

    }


}
?>

我不知道为什么,但这似乎不起作用。基本上在打开 Jquery Dialog 窗口时$rowdata为空,但是当我回显查询时,它显示$rowdata具有正确的值。

我尝试将 jquery 窗口的代码放入单独的 php 文件中,并在成功的 ajax 脚本中添加了以下内容:

        $('#cp-bookings-dialog').load('bookings-dialog.php', function() {
           alert('Load was performed.');
        });

但这没有任何区别。我知道所有代码都是正确的,因为例如,如果我将 $rowdata 设置为“BR12345”,它会在 jquery 预订对话框中显示我需要的值。我认为需要做的是在将值$rowdata传递给 PHP 脚本之后运行 PHP 查询。

有人知道我该怎么做吗?

4

1 回答 1

1

您需要从您的 PHP 脚本返回一个 JSON 编码的对象以在您的弹出窗口中使用。在进行 AJAX 调用之前评估您的 echo 调用,更糟糕的是,它根本不知道GetBookings状态(状态仅对单个请求有效)。

为什么是everying static?这看起来像一个糟糕的软件设计。

于 2012-07-11T08:11:08.320 回答