1

私はこれに何日も苦労してきました。これは機能しますが、正しい変数をページ(testMap.php)に渡しません。DBからのデータを使用し、リンクにカーソルを合わせるとURLに正しい変数が表示されますが、何らかの理由でjqueryは常にループの最初の変数を取得しています。助言がありますか?

<?php
    $myname = $_SESSION['username'];
    global $database;
    $stmt = $database->connection->query("SELECT * FROM ".TBL_FLIGHTS." WHERE username='$myname'");

        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
            $date       = $row['date'];
                    $starting   = $row['starting'];
                    $ending     = $row['ending'];
                    $route      = $row['route'];
                  echo "<a class=\"route\" href=\"start=$starting&end=$ending\"><p class=\"pBlue\">$date - $starting - $ending - $route</p></a>";
                  ?>
        <div id="start" style="visibility:hidden"><?php echo $starting; ?></div>
        <div id="end" style="visibility:hidden"><?php echo $ending; ?></div>
        <?
    }

    ?>


<script type="text/javascript">
$(document).ready(function() {
    var start = $('#start').text();
    var end = $('#end').text();

    $(function() {
      $(".route").click(function(evt) {
         $("#mymap_canvas").load("testMap.php?start="+start+"&end="+end )
         evt.preventDefault();
      })
    })

});
</script>
4

2 に答える 2

0
<?php
    $myname = $_SESSION['username'];
    global $database;
    $stmt = $database->connection->query("SELECT * FROM ".TBL_FLIGHTS." WHERE username='$myname'");
$i=1;
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
            $date       = $row['date'];
                    $starting   = $row['starting'];
                    $ending     = $row['ending'];
                    $route      = $row['route'];
                  echo "<a class=\"route\" href=\"start=$starting&end=$ending\"><p class=\"pBlue\">$date - $starting - $ending - $route</p></a>";
                  ?>
        <div class="start<?php echo $i; ?>" style="visibility:hidden"><?php echo $starting; ?></div>
        <div class="end<?php echo $i ?>" style="visibility:hidden"><?php echo $ending; ?></div>
        <?
   $i++; }

    ?>


<script type="text/javascript">
$(document).ready(function() {
    var start = $('.start1').text();
    var end = $('.end<?php echo $i; ?>').text();

    $(function() {
      $(".route").click(function(evt) {
         $("#mymap_canvas").load("testMap.php?start="+start+"&end="+end )
         evt.preventDefault();
      })
    })

});
</script>
于 2012-04-16T12:38:36.393 に答える
0

それはそう; クリックイベント内の開始値と終了値をキャプチャし、クリックされたルートの近くにある開始値と終了値を選択する必要があります。

おそらくあなたが望むもの:

$(".route").click(function(evt) {
    var start = $(this).siblings(".start").text();
    var end = $(this).siblings(".end").text();
    $("#mymap_canvas").load("testMap.php?start="+start+"&end="+end )
    evt.preventDefault();
}); // I believe you are missing a semicolon here and at the end, too

しかし、何かが足りない場合を除いて、phpを介してそのhrefをビルドし(フルパスとクエリ文字列で完了することを除いて)、次のように実行できます。

$(".route").click(function(evt) {
    // Load the href of the route anchor into 'mymap_canvas'
    $("#mymap_canvas").load($(this).attr("href"));
    event.preventDefault();
    return false; // Prevent the normal click behavior
});

これ以上隠された開始と終了はありません!ただし、必ず元のアンカータグを次のように更新してください。

<a class=\"route\" href=\"testMap.php?start={$starting}&end={$ending}\">...</a>
于 2012-04-16T12:55:17.490 に答える