使用MySql Fetch Array和Ajax创建可点击链接


Creating a Clickable Link Using MySql Fetch Array and Ajax

我正试图在while循环中使用mysql_fetch_array中的特定数字结果来执行Javascript函数(Ajax)。我的php代码的一个基本片段如下:

while ($data = mysql_fetch_array($result)) 
{
$link = $data['id']; //example results will be 12345
echo '<span id="val" onclick="goto()">'.$link.'</span>'; //lists 12345, and makes each clickable
}

我的部分Javascript代码如下:

function goto(str)
{
   Ajax...
   var idval = document.getElementById('val').innerHTML; //grabs 1,2,3,4, or 5 based on which number was clicked
   Ajax...
}

我在这里要做的是从MySql中查询多个记录,使用while循环列出结果,使每个结果都可以单击,并将内部html传递给Ajax的变量。

我的问题是,当我点击while循环列表中的任何结果时,我只传递mysql获取数组的第一个结果。例如,while循环将列出12345。当我尝试点击3时,我得到1作为内部html;当我尝试点击5时,我得到1作为内部html;等等…它总是得到第一个结果,即1。

我尝试过内爆和分解mysql获取数组,但是内部html最终总是数组结果的第一行。我需要以某种方式分解数组,这样每一行都是独立的,不仅在视觉上,而且在编程上,这样我就可以使用getElementById.innerHTML.获得它

我真的很感谢任何人的帮助。你的建议和希望的答案将真正帮助使我的php项目更加有用。

首先,将php脚本更改为如下所示:

while ($data = mysql_fetch_array($result)) 
{
    $link = $data['id']; //example results will be 12345
    echo '<span id="val'.$link.'" onclick="goto('.$link.')">'.$link.'</span>';
}

然后,使用以下javascript代码:

function goto(link)
{
    Ajax...
    var idval = document.getElementById('val'+link).innerHTML; 
    Ajax...
}

但我不确定str在javascript代码中的含义,也不确定为什么函数goto在调用时使用1个参数(str)而不使用参数(onclick="goto()")。

您的问题是在span元素中使用id="val"。所以你只能得到第一个元素。所以您最终总是得到第一个span的内部html。

最简单的解决方案是将id值作为参数传递给goto函数调用。

更新:你可以修改你的功能如下:

function goto(link)
{
    Ajax...
    var idval = link;
    Ajax...
}