jquery div在用户配置文件中没有显示更多它们

时间:2013-07-04 04:26:00

标签: php jquery ajax

我一直在研究这段代码,我终于难倒了,无法弄清楚要解决这个问题需要做些什么。

我有一个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>";

2 个答案:

答案 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进行冗余调用