我一直在研究这段代码,我终于难倒了,无法弄清楚要解决这个问题需要做些什么。
我有一个jquery代码,可以很好地为get配置文件工作,但是当我需要返回div中的值时,它只显示用户的第一个配置文件,但如果用户在博客上发布的次数超过一次,它不会显示个人资料信息。我试图为每个配置文件div附加更多信息,但它仍然不起作用。
以下是GET用户配置文件和返回响应的jQuery代码。
function showUser(str)
{
var profileDiv = document.getElementById("profile_"+ str);
if (str=="")
{
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
profileDiv.innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","getuser.php?q="+str,true);
xmlhttp.send();
}
此处还有我用来传递信息的PHP脚本
"<div id=\"info\" onmouseover=\"showUser(" .$blogrow['id_user'].")\"><imgalign= \"left\" style=\"vertical-align:top;\" class=\"imgb\" height=\"41\" width=\"41\" src=\"profilepics/".$blogrow['pic']."\" />".$blogrow['author']." <br>".$blogrow['timestamp']."<br></div><br>";
echo "</div>";
这里也是存储信息的div部分
echo "<div id=\"txtHint\"><div id=\"profile_".$blogrow['id_user']."\"></div></div>";
答案 0 :(得分:0)
使用$.ajax
会更简单,例如
function showUser(str)
{
$.ajax({
url:'getuser.php',
data:{q:str},
type:'GET',
success:function(data){
$("#profile_"+ str).html(data);
}
});
}
但是,在此之前您需要添加 jQuery 的任何version
答案 1 :(得分:0)
问题依赖于您的HTML标记,这是无效的。元素ID在HTML页面中必须是唯一的,但我会看到很多重复的ID,例如#info
,#theDiv
,#txtHint
和#profile_X
快速解决您的问题的方法是将所有这些和任何其他重复ID更改为类,然后使用@Rohan Kumar提供的ajax代码,但使用类选择器将内容附加到每个提及的用户中页面
function showUser(str)
{
$.ajax({
url:'getuser.php',
data:{q:str},
type:'GET',
success:function(data){
$(".profile_"+ str).html(data);
}
});
}
这绝对不是最有效或最优雅的解决方案,但我认为它会起作用。如果您尝试改进代码,我建议将类.info
的所有div绑定到mouseenter处理程序,使用data-attributes获取用户ID,并且可能维护检索到的配置文件列表,这样您就不会最终对你的php进行冗余调用