如何将php id从数组传递到javascript函数
有人能提供一些帮助吗 我从mysql获取数组中的信息,然后根据这些信息显示一个图像。当用户鼠标经过图像或单击时,我试图将id从图像或单击传递到javascript post函数,该函数随后会写入视图或单击记录 不幸的是,javascript只工作了一半,因为它使用数组中的最后一个id,而不是特定id。我不确定如何传递特定id 我不是一个程序员,一直试图在没有帮助的情况下解决这个问题,我也一直在搜索这个和其他网站的解决方案。感谢您提供的任何帮助如何将php id从数组传递到javascript函数,javascript,php,Javascript,Php,有人能提供一些帮助吗 我从mysql获取数组中的信息,然后根据这些信息显示一个图像。当用户鼠标经过图像或单击时,我试图将id从图像或单击传递到javascript post函数,该函数随后会写入视图或单击记录 不幸的是,javascript只工作了一半,因为它使用数组中的最后一个id,而不是特定id。我不确定如何传递特定id 我不是一个程序员,一直试图在没有帮助的情况下解决这个问题,我也一直在搜索这个和其他网站的解决方案。感谢您提供的任何帮助 <?php $result = $sql-&
<?php
$result = $sql->query("SELECT * FROM carousel WHERE paper = 'Torch2'");
$rows = array();
while ($row = $result->fetch_assoc()) {
$rows[] = $row;
}
$i = 1;
foreach ($rows as $row):
$item_class = ($i == 1) ? 'active item' : 'item';
echo "<div class='$item_class'>";
echo "<div class='clicks mouseovers'>";
echo "<a href='".$row['link']."' target='_blank'><img src='ads/artwork/".$row['filename1']."' /></a>";
?>
<script>
var id = <?php echo $row['id']; ?>;
$("div.clicks").click(function() {
$.post("includes/clicks_carousel",{id:id});
});
$( "div.mouseovers" ).on( "mouseenter", function() {
$.post("includes/mouseovers_carousel",{id:id});
});
</script>
<?
echo "</div>";
echo '</div>';
$i++;
endforeach;
代码中的问题是每个循环的变量id都被覆盖
将id保存在隐藏的div/span/a中(使用文本或数据属性)
只为click事件编写一个javascript代码,并获取隐藏的div/span/a
foreach ($rows as $row) {
$item_class = ($i == 1) ? 'active item' : 'item';
echo "<div class='$item_class'>";
echo "<div class='clicks mouseovers'>";
echo "<a href='".$row['link']."' target='_blank'><img src='ads/artwork/".$row['filename1']."' /></a>";
echo "<span class='hide item_id' data-item_id='".$row['id']."'></span>";
echo "</div>";
echo '</div>';
$i++;
}
<script>
$("div.clicks").click(function() {
var item_id = $(this).children("span").data("item_id");
$.post("includes/clicks_carousel",{id:item_id});
});
$( "div.mouseovers" ).on( "mouseenter", function() {
var item_id = $(this).children("span").data("item_id");
$.post("includes/mouseovers_carousel",{id:item_id});
});
</script>
foreach($rows作为$row){
$item_class=($i==1)?“活动项”:“项”;
回声“;
回声“;
回声“;
回声“;
回声“;
回声';
$i++;
}
$(“div.clicks”)。单击(函数(){
var item_id=$(this).children(“span”).data(“item_id”);
$.post(“包括/点击旋转木马,{id:item_id}”);
});
$(“div.mouseovers”)。在(“mouseenter”,function()上{
var item_id=$(this).children(“span”).data(“item_id”);
$.post(“包括/mouseovers_carousel”,{id:item_id});
});
BabyAzenty已经发布了一个解决方案,但我想我会写一点,试图解释这里发生了什么
您总是发送数组中最后一个ID的主要原因是,简而言之,JavaScript的不同标记集不会创建单独的环境;您在循环的每次迭代中创建的“id”变量总是引用相同的“id”变量(即使您用“var”重新声明它,它被忽略,并且原始变量被重用)。所以当这个JS代码运行时:varid=代码>,它将覆盖上一个值,因此它将始终等于页面上声明的最后一个值
作为一个例子,你可以看看我放在一起的这个,一个常见的例子。基本上,我有一个循环,在其中我创建了10个按钮-在每个按钮上,我添加一个事件以显示一个警报框,其中包含我所处的数字按钮。正如您所看到的,每个按钮都显示“10”,因为变量“i”总是在循环的下一次迭代中得到更新,并且这些警报函数总是指向相同的值
有多种方法可以避免这种行为-BabyAzenty已经发布了一个解决方案,您可以将ID的值存储在页面上,并在调用事件时重用它。感谢Alistair和BabyAzerty,我现在可以看到错误以及循环是如何影响它的。现在工作得很好!