0

如何从 Ajax GET 命令的 PHP FOR & WHILE 循环组合中获取正确的 mysql id?现在,当我进行测试警报时,每个 href 的 onclick 都会导致最后一个 id 被警报,而不是正确的 id。

   <?php 
    $varRank = 1;
    $pRow = 1;
    $pBlock = 1;
       FOR ($pRow == 1; $pRow < 5; $pRow++){    
            WHILE ($pBlock <= $pRow){

            mysql_select_db($database_cms_test, $cms_test);
            $query = "SELECT * WHERE rank=$varRank";
            $result = mysql_query($query) or die();
            $row = mysql_fetch_array($result);

            $scr = '<script type="text/javascript" src="jquery.min.js"></script>' .
            '   <script type="text/javascript">' .
            '       function runCounter(){' .
            '       var currentID = ' . $row['id'] . ';' .
            '       var currentRank = ' . $row['rank'] . ';' .  
            '       alert(\'the current id is \' + '. $row['id'] .');' .                
            '       $.get("counter5.php?id=' . $row['id'] . '");' .
            '       }' .
            '   </script>';

            echo $scr;

            $onclkHTML = '<a href="#" onclick="runCounter();" id="' .    $row['song_name'] . '">' .
            '<img src="images/glossy.jpg" width="30" height="30" align="absmiddle" hspace="10" /></a>';
            echo $onclkHTML;    

            $pBlock++;
            $varRank++;
            }
            $pBlock = 1;  // reset
        }
    ?>
4

1 回答 1

1

您每次通过循环都重新定义相同的函数。

既然您使用的是 jQuery,为什么不直接绑定一个点击处理程序呢?为这些链接中的每一个赋予一个类,并使用data-XXX标签将参数与其关联:

$onclkHTML = '<a href="#" class="counter" id="' . $row['song_name'] . ' data-rank=" . $row['rank'] . " data-id=" . $row['id'] . ">' .
        '<img src="images/glossy.jpg" width="30" height="30" align="absmiddle" hspace="10" /></a>';
echo $onclkHTML;    

然后只需将处理程序绑定到类:

$(function () {
    $(".counter").click(function() {
        var currentId = $(this).data("id");
        var currentRank = $(this).data("rank");
        alert("The current id is " + currentId);
        $.get("counter5.php?id=" + currentId);
    });
});
于 2013-04-16T01:51:19.180 回答