1

ウェブサイトをご覧ください。

私のデータベースには、「名前」(左側のステップ 2 の下のイベント)、「価格」、「日付」などの値を持つテーブルがあり、イベントに応じて右側の暗いボックスにそれらを動的に表示したいと考えています。選ばれました。

現在、以下のコードでイベント自体を表示していますが、この選択に基づいてデータベースの値を取得するように開発する方法がわかりません。私はある種の .get() を推測しています。

<script type="text/javascript">

    $(document).ready(function() {
            $('#right_inside').html('<h2>' + $('#club').val() + '</h2>');
    });

    $('#club').change(function(event) {
        $('#right_inside').html('<h2>' + $('#club').val() + '</h2>');
    });

</script>

これは私が何年もの間困惑していたので、どんな助けでも大歓迎です!

編集

返信ありがとうございます。これが私が今持っているものですが、機能していません。

jQuery:

<script type="text/javascript">

$(document).ready(function() {
        $('#right_inside').html('<h2>' + $('#club').val() + '</h2>');
});

$('#club').change(function(event) {
    $.ajax({
        type: "post",
        url: "eventinfo.php",
        data:  $(this).serialize(),
        success: function(data) {
            $('#right_inside').html('<h2>' + $('#club').val() + '</h2>Price'+data.price);
            },
        dataType: "json"
    });

});

</script>

eventinfo.php:

    <?php
// the name of the input text box is 'club'
    $night = $_POST['club'];
    $night = mysql_real_escape_string($night);

// one of the columns values included in * is 'price'
// this line was previously: $query = mysql_query("SELECT * FROM nights WHERE name = '$night'");
    $query = "SELECT * FROM nights WHERE name = '$night'";

        $result = mysql_query($query);
        $items = array();

        if($result && mysql_num_rows($result) > 0) { 
            while ($row = mysql_fetch_array($result)) { 
                $items[] = array($row[0]);
                }         
        } 

        mysql_close(); 
        // convert into JSON format and print
        echo json_encode($items);
    ?>
4

3 に答える 3

1

これは、クライアント側のテンプレートを使用するのに適した場所です。jQuery.tmpl を使用して、右側のテンプレートを作成します (以下の例)。

<script id="infoTemplate" type="text/html">
    <div>
        <span>${price}</span>
        <span>${information}</span>
    </div>
</script>

次に、eventId のようなものを受け取り、{"price":"123.34","information":"some info here"} のような JSON オブジェクトを返すメソッドを PHP で作成します。テンプレートをロードするには、次のようにします。

$(document).ready(function(){
    // ... other stuff

    $.template("infoTemplate", $("#infoTemplate").html());
});

次に、変更イベント ハンドラーで次の操作を行います。

$('#club').change(function(event) {
    $.get('/yourNewPHPMethod', $('#club').val(), function(data){
        $('#right_inside').html($.tmpl('infoTemplate', data));
    });
});

申し訳ありませんが、これをテストする時間がありませんでしたが、これは主なアイデアであり、将来この種の作業の適切なパターンを確立するのに役立つはずです. 以下の jQuery.tmpl ドキュメントを参照してください: http://api.jquery.com/jquery.tmpl/

于 2012-06-13T15:06:51.500 に答える
1

最善の方法は、xmlhttp オブジェクトを使用して、データをエコーアウトする PHP ページをロードすることです。その xmlhttp オブジェクトから、(PHP ページの出力コンテンツとなる) responseText を Javascript 変数に割り当てることができます。

つまり、おそらくAJAXを使用する必要があります。

于 2012-06-13T14:55:02.650 に答える
1

私の理解が正しければ、価格を取得するには AJAX 呼び出しが必要です。だから何か

$('#club').change(function(event) {
     $.ajax(
     {type: "post",
     url: "/path/to/price",
     data:  $(this).serialize(),
     success: function(data)
     {
      $('#right_inside').html('<h2>' + $('#club').val() + '</h2>Price'+data.price);
     },
    dataType: "json"
});

次に、PHP を使用しているため、必要な値を取得して配列にロードし、json_encode を使用します。

アップデート

PHPの場合は変更してみてください

    if($result && mysql_num_rows($result) > 0) { 
        while ($row = mysql_fetch_array($result)) { 
            $items[] = array($row[0]);
            }         
    } 

    if($result && mysql_num_rows($result) > 0) { 
        while ($row = mysql_fetch_array($result)) { 
            $items[] = array("price"=>$row['price']);
            }         
    } 

アップデート #2

PHP ファイルの上部付近に以下を追加してみてください。

header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');
于 2012-06-13T14:57:57.050 に答える