2012-07-11 52 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?這看起來像一個糟糕的軟件設計。