2012-07-11 54 views
-1

我知道我已经问过这个问题,但我还需要这方面的帮助来使用,基本上是:传递一个jQuery变量在PHP脚本

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

enter image description here

在此预订网我有一个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的对话框窗口:

<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脚本中使用的'Booking Reference'值。目前,此事件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; 

最后到PHP脚本,我想用这个jquery价值:

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对话窗口时,$rowdata为空,但是当我回显查询时,它显示$rowdata具有正确的值。

我试图把对jQuery的窗口中的代码到一个单独的PHP文件,并在我加入以下的研制成功AJAX脚本:

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

但是这并没有什么差别。我知道所有的代码都是正确的,因为如果我将$ rowdata设置为'BR12345',它会在jquery预订对话框中显示我需要的值。我相信需要完成的是在值$rowdata传递给PHP脚本后运行PHP查询。

任何人都知道我该如何做到这一点?

回答

1

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

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