1

私は他の誰かのコードをフォローしているので、これに苦労しています。誰かが私を助けてくれれば幸いです。

基本的に、予約のリストを表示する Jqgrid があります。行をダブルクリックすると、予約に関するすべての詳細を表示する jqdialog が開きます。

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: 'POST',

    data: {

        ft: "getDGRow",
        type: 'POST',
        data: 'fnme=getDGRow&row_data='+brData,
        //row_data: rowData,


        id: null,
        condition: null
    },
    dataType: 'xml',
    timeout: 20000,
    error: function(){
        $('#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){


    }
});

これは all.request.php の場合です:

case 'getDGRow':
header('Content-type: text/xml');
DatagridController::getGridRow($_REQUEST['row_data']);
break;

これは、変数「brData」を渡したい場所です。

public static function getGridRow($row_data) {


    $pdo = new SQL();
    $dbh = $pdo->connect(Database::$serverIP, Database::$serverPort, Database::$dbName, Database::$user, Database::$pass);

    try {

        $query = "SELECT * FROM tblbookings WHERE bookref = '$row_data'";

私は現時点でこれが非常に混乱していると思っているので、どんな助けでも大歓迎です。現時点では、$row_data は私の php 関数が空白であるため、明らかにデータベースから行を選択していません。

4

1 に答える 1

2

JavaScript 関数が空の変数を渡していないことを確認することから始めます。変数「brData」をアラートしてみてください。次に、おそらく firebug のコンソールを使用して、ajax 呼び出しが成功したかどうかを確認します。3 番目に、PHP がそれを受け取り、関数に入ることができることを確認します。あなたは試すことができます

public static function getGridRow($row_data) {
    echo $row_data;
    exit;
}

PHP ファイルで、html で値を警告します。

function getGridRow(brData) {
    $.ajax({
        //...blah blah blah
        success: function(response){
            alert(response);
        }
    });
}

スクリプトからアラートを受け取ることができる場合、PHP スクリプトから返された変数の値を使用してデータベースに手動でクエリを実行するのが最後になると思います。生成されたクエリの結果は実際にはありません。

于 2012-06-05T17:12:32.490 に答える