我有一個bookings.php頁面,它有一個jqgrid,顯示所有網上預訂。當你雙擊一行時,這會打開一個jq對話框,顯示關於那裏預訂的所有細節。此外,當您雙擊,我有一個變量定義這是我想傳遞給PHP腳本的預訂編號:PHP/Ajax/jQuery - 將一個jQuery值傳遞給一個PHP腳本
var brData = rowData['bookref'];
我通過AJAX發送此變量:
function getGridRow(brData) {
$.ajax({
// Request sent from control panel, so send to cp.request.php (which is the handler)
url: 'scripts/php/bootstrp/all.request.php',
type: 'GET',
// Build data array - look at the '$_REQUEST' parameters in the 'insert' function
data: {
//ft: "getDGRow",
rowdata: 'fnme=getDGRow&row_data='+brData,
data: brData,
// Either pass a row id as the 'id' OR a where clause as the 'condition' never both
id: null,
condition: null
},
dataType: 'text',
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);
}
});
}
這裏是開關情況下all.inc.php:
case 'getDGRow':
//header('Content-type: text/xml');
DatagridController::getGridRow($_REQUEST['rowdata']);
break;
這是我送的jQuery的變量,我在PHP代碼中使用PHP函數:
public static function getGridRow($rowdata) {
$rowdata = $_GET['data'];
echo $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'");
$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;
}
}
我已經把echo $ rowdata;在PHP函數中查看是否正在傳遞變量,因爲我可以在螢火蟲控制檯中看到'BR12345'。問題是這個查詢:
$query = ("SELECT * FROM tblbookings WHERE bookref = '$rowdata'");
沒有獲取任何結果。如果我是放:
$query = ("SELECT * FROM tblbookings WHERE bookref = 'BR12345'");
它不取,我需要讓我無法理解,爲什麼這個查詢不工作時,被傳遞到$ rowdata
任何建議變量BRDATA結果?
作爲一個GET請求,你不應該在做'scripts/php/bootstrp/all.request.php?data = BR12345'嗎?否則,數據可能不會被髮送(如果AJAX是POST,它將在$ _POST中)。由於我不知道JQuery,我可能是錯的。另外,你應該在PHP中的數據上使用'mysql_real_escape_string()'。 –
您是否嘗試過使用完整路徑URL請求? (例如http://domain.com/phpfile.php),並且要小心跨域問題,ajax最不能在跨域上工作,用www調用它。或沒有www。 –
@ScottS [PDO :: quote](http://php.net/manual/en/pdo.quote.php)是mysql_real_escape_string()的PDO「等價物」。閱讀PDO,或mysqli_ *建議使用它們而不是mysql_ *函數。 –