Tengo una página bookings.php que tiene un jqgrid que muestra todas las reservas que se han realizado en línea. Cuando hace doble clic en una fila, se abre un cuadro de diálogo jq que muestra todos los detalles sobre la reserva. Además, cuando se hace doble clic, he una variable definida, que es la referencia de la reserva, que quiero pasar a un script PHP:PHP/Ajax/jQuery - Pasar un valor jquery a un script php
var brData = rowData['bookref'];
Estoy enviando esta variable a través de 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);
}
});
}
Aquí es el caso de conmutación para all.inc.php:
case 'getDGRow':
//header('Content-type: text/xml');
DatagridController::getGridRow($_REQUEST['rowdata']);
break;
Ésta es la función PHP que estoy enviando a la variable jQuery, para usar dentro de mi código 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;
}
}
He puesto echo $ rowdata; en la función de PHP para ver si se está pasando la variable que es como puedo ver 'BR12345' en la consola de Firebug. El problema es que esta consulta:
$query = ("SELECT * FROM tblbookings WHERE bookref = '$rowdata'");
no está obteniendo ningún resultado. Si tuviera que poner:
$query = ("SELECT * FROM tblbookings WHERE bookref = 'BR12345'");
que no traiga los resultados que necesito, así que no puedo entender por qué esta consulta no está funcionando cuando la variable brData se está pasando a $ rowdata
Cualquier sugerencia ?
Como una solicitud GET, ¿no debería estar haciendo ''scripts/php/bootstrp/all.request.php? Data = BR12345''? De lo contrario, probablemente no se enviarán los datos (estaría en $ _POST, si el AJAX estaba en POST). Como no conozco a JQuery, podría estar equivocado. Además, realmente debería usar 'mysql_real_escape_string()' en los datos en PHP. –
¿Ha intentado utilizar la solicitud de URL de ruta completa? (ej. http://domain.com/phpfile.php), y también tenga cuidado con los problemas de dominio cruzado, ajax no funcionará en el dominio cruzado más especialmente, llamándolo con www. o sin www. –
@ScottS [PDO :: quote] (http://php.net/manual/en/pdo.quote.php) es el PDO "equivalente" para mysql_real_escape_string(). Lea en PDO, o mysqli_ *, se recomienda su uso en lugar de las funciones mysql_ *. –