以前にこの質問をしたことは知っていますが、基本的にこれについてまだ助けが必要です:
以下に示すように、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 ダイアログ ウィンドウも開きます。
<div class="cp-tiles-wrapper-dlg">
<div class="cp-booking-info left">
<p class="pno-margin">Booking Date: <strong>Booking Reference is = <? echo BookingDocket::get_bookref(); ?></strong></p>
<p class="pno-margin">Return Date: <strong><? echo BookingDocket::get_bookdate(); ?></strong></p>
<p class="pno-margin">Journey: <strong></strong></p>
<p class="pno-margin">Passenger Tel: <strong></strong></p>
<p class="pno-margin">E-mail: <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;
最後に、この 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
はnullですが、クエリをエコーすると$rowdata
正しい値が表示されます。
jqueryウィンドウのコードを別のphpファイルに入れようとしましたが、成功したajaxスクリプトに次を追加しました:
$('#cp-bookings-dialog').load('bookings-dialog.php', function() {
alert('Load was performed.');
});
しかし、これは何の違いもありません。たとえば、$rowdata を 'BR12345' に設定すると、jquery の予約ダイアログに必要な値が表示されるため、すべてのコードが正しいことがわかります。私が行う必要があると考えているのは、値$rowdata
が PHP スクリプトに渡された後に PHP クエリを実行することです。
誰も私がこれを行う方法について何か考えを持っていますか?