0

次のように OndblClickRow 関数を持つ JQGrid があります。

    ondblClickRow: function(rowid)
    {
        rowData = $("#bookings").getRowData(rowid);
                    var brData = rowData['bookref'];
                    console.log(brData);



        getGridRow(brData);

        //$("#cp-bookings-dialog").dialog({ hide: 'slide', height: 625, width: 733, title: 'Booking Reference: - '+ brData});
    },

これは次の関数に渡されます。

function getGridRow(brData) {

    $.post("bookings-dialog.php", { 'rowdata': brData } );
               $("#cp-bookings-dialog").load('bookings-dialog.php').dialog({ show: "slide", hide: 'slide', height: 625, width: 733, title: 'Booking Reference: - '+ brData});
    ,

これにより、bookings.dialog.php ページが読み込まれます。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Title</title>
<?php

set_include_path($_SERVER['DOCUMENT_ROOT'] . "/onlinebookingv4/scripts/php/");
require_once('models/sql.php');

require_once('models/bookingdocket.php');



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

    try {
           $rowdata = $_POST['rowdata'];
           $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;





?>
</head>

<body>
<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">Query =  &nbsp;<strong><? echo $query; ?></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>
</body>
</html>

私がやろうとしているのは、bookings-dialog.php への予約参照である「brData」を渡して、予約参照によってデータベースからすべての予約を選択できるようにすることです。

現在、行をダブルクリックすると、firebug コンソールで次のように表示されます。

SELECT * FROM tblbookings WHERE bookref = 'BR1278'どちらが正しいかを示している POST bookings-dialog.php

しかし、それはまた示しています:

表示されている GET bookings-dialog.phpSELECT * FROM tblbookings WHERE bookref = ''

私には、これが何らかの形でオーバーライドされているように見えますが、おそらく間違っています。

これを機能させる方法を知っている人はいますか?

4

1 に答える 1

0

HTML を送り返すのではなく、JSON のようなものを送り返したいのです。私たちの#cp-bookings-dialog要素は、次のような HTML 構造を持つ必要があります ->

<div id="cp-bookings-dialog">
  <div class="cp-tiles-wrapper-dlg">
    <div class="cp-booking-info left">
    </div>
  </div>
</div>

次に、データをサーバーに送信します。あなたの既存のコードは実際には問題ありません。私のコメントは別のタイプのアクションを想定していました。

$.post("bookings-dialog.php", { 'rowdata': brData } );

これは、私が仮定をしなければならないところです。set_var($_POST['var'])クラスを実行したらBookingDocket、JSON でエンコードされた key:value ペアの配列を返すだけで、ブラウザーで解析され、ダイアログの情報を更新するために使用されます。

//for example, only showing the last two...
BookingDocket::set_passtel($row['passengertel']);
BookingDocket::set_returndate($row['returndate']);

//create a scope of variables to prepare and return
$booking_date = BookingDocket::get_bookref();
//query is already set, omitting it.
//making assumptions about data I cannot see
$journey = BookingDocket::get_journey();
$pass_tel = BookingDocket::get_tel();
$email = BookingDocket::get_email();

//formatting here is for example and not live usage
return json_encode(array("date" => $booking_data, 
                         "query" => $query, 
                         "journey" => $journey, 
                         "pass_tel" => $pass_tel, 
                         "email" => $email
                         )
                  );

それでは、JSON エンコードされた配列を返します。$.post メソッドに戻って、何ができるか見てみましょう。

//I prefer to write things out with $.ajax
$.ajax({
  url: 'booking-dialog.php',
  data: {'rowdata' : brData },
  dataType: 'json', //this is what we expect our returned data as
  success: function(data){
    //empty our dialog so we don't end up with duplicate content
    $('.cp-booking-info').empty();
    //we have told the browser to expect JSON back, no need to do any parsing
    //the date
    $('.cp-booking-info').append('<p class="pno-margin">Booking Date: '+data.date+'</p>');
    //the query
    $('.cp-booking-info').append('<p class="pno-margin">Query: '+data.query+'</p>');
    //the journey
    $('.cp-booking-info').append('<p class="pno-margin">Journey: '+data.journey+'</p>');
    //thepassenger tel
    $('.cp-booking-info').append('<p class="pno-margin">Passenger Tel: '+data.pass_tel+'</p>');
    //the email
    $('.cp-booking-info').append('<p class="pno-margin">Email: '+data.email+'</p>');

    //now let's manipulate our dialog and open it.
    $("#cp-bookings-dialog").dialog({ 
      show: "slide", 
      hide: 'slide', 
      height: 625, 
      width: 733, 
      title: 'Booking Reference: - '+ brData
    });
  }

});

これは、あなたのシステムがどのように機能するかを私が想像できる最も簡単なモックアップです。

于 2012-08-17T14:51:21.377 に答える