我试图在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 fetch数组的第一个结果。例如,while循环将列出12345.当我尝试单击3时,我得到1作为内部html;当我尝试点击5时,我得到1作为内部html;等等......总是得到第一个结果,即1。
我尝试了破解和爆炸mysql fetch数组,但是内部html总是最终成为数组结果的第一行。我需要以某种方式分解数组,以便每一行都是独立的,不仅仅是在视觉上,而是以编程方式,所以我可以使用getElementById.innerHTML来获取它。
我非常感谢任何人的帮助。您的建议和希望答案将真正有助于使我的PHP项目更有用。
答案 0 :(得分:1)
您的问题是您在span元素中使用id =“val”。所以你只能获得第一个元素。所以你最终会得到第一个跨度的内部html。
最简单的解决方案是将id值作为参数传递给goto函数调用。
更新:你可以修改你的功能如下:
function goto(link)
{
Ajax...
var idval = link;
Ajax...
}
答案 1 :(得分:1)
首先,将您的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()"
)。