Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将php id从数组传递到javascript函数_Javascript_Php - Fatal编程技术网

如何将php id从数组传递到javascript函数

如何将php id从数组传递到javascript函数,javascript,php,Javascript,Php,有人能提供一些帮助吗 我从mysql获取数组中的信息,然后根据这些信息显示一个图像。当用户鼠标经过图像或单击时,我试图将id从图像或单击传递到javascript post函数,该函数随后会写入视图或单击记录 不幸的是,javascript只工作了一半,因为它使用数组中的最后一个id,而不是特定id。我不确定如何传递特定id 我不是一个程序员,一直试图在没有帮助的情况下解决这个问题,我也一直在搜索这个和其他网站的解决方案。感谢您提供的任何帮助 <?php $result = $sql-&

有人能提供一些帮助吗

我从mysql获取数组中的信息,然后根据这些信息显示一个图像。当用户鼠标经过图像或单击时,我试图将id从图像或单击传递到javascript post函数,该函数随后会写入视图或单击记录

不幸的是,javascript只工作了一半,因为它使用数组中的最后一个id,而不是特定id。我不确定如何传递特定id

我不是一个程序员,一直试图在没有帮助的情况下解决这个问题,我也一直在搜索这个和其他网站的解决方案。感谢您提供的任何帮助

<?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,我现在可以看到错误以及循环是如何影响它的。现在工作得很好!