2012-04-16 91 views
1

我一直在为此挣扎好几天。这可以工作,但不会将正确的变量传递给页面(testMap.php)。我使用我的数据库中的数据,并悬停在链接上显示URL中的正确变量,但无论出于何种原因,jquery总是在循环中获取第一个变量。有什么建议么?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> 
+1

ID必须是唯一的。该循环告诉我,你正在创建多个ID开始和结束的元素,这是错误的。 – 2012-04-16 12:36:04

回答

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> 
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> 
+0

这给出变量$开始所有值:$ starting = khiiklaskord例如,开始应该等于khii。感谢您的帮助:) – azpilot 2012-04-16 12:47:10

+0

你确切想要什么请简单多一点 – 2012-04-16 12:48:49

+0

我需要$开始显示该查询的结果,$结束以显示结果。发生的事情是,jquery只传递数据库查询的第一个结果。 – azpilot 2012-04-16 12:54:24

相关问题