我正试图在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...
}