Ajax使用锚点获取请求以发送请求 - 而不是发送变量

时间:2014-02-26 09:44:28

标签: javascript php ajax

我有这个PHP代码,它根据存在的图像ID从数据库中检索信息。它运行正常,现在我正在尝试将其转换为ajax请求,以便将其加载到一个页面上。我正在努力发送变量,ajax请求似乎工作得很好,因为它发送到页面并检索信息但它没有发送变量,因此返回的信息是空白的。

我一直在关注教程,并尝试根据自己的需要进行调整,并在最后开始分崩离析。

非常感谢任何帮助!

这是我的html:

//these anchors are meant to send the value attribute through the ajax using showEp()
//I believe it's here that the request is falling down.
<a href="#" value="<?php echo $ep['ep_id'];?>" onclick="showEp(this.value)"><img src="images/Database/releases/<?php 
    if(isset($ep['ep_img'])){
        echo $ep['ep_img'];
    } else {
        echo 'no_EP.png';
    }
    ?> " height="125" width="125"/></a>
<div id="ep"></div>

这是我的javascript:

function showEp(str)
{
if (str=="")
  {
  document.getElementById("ep").innerHTML="";
  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)
    {
    document.getElementById("ep").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","showep.php?ep_id="+str,true);
xmlhttp.send();
}
return false; // to disable the link from following it's href.

2 个答案:

答案 0 :(得分:0)

试试这个:

<?php
if(isset($ep['ep_img'])){
    $img = $ep['ep_img'];
} else {
    $img = 'no_EP.png';
}
?>

<a href="#" value="<?php echo $ep['ep_id'];?>" onclick="showEp(this.value)">
    <img src="images/Database/releases/<?php echo $img;?>" height="125" width="125"/>
</a>

答案 1 :(得分:0)

我发现的问题是使用value属性,这实际上不是锚标记的属性 - 如果我错了,请纠正我。

经过一些额外的研究后,我发现如果我使用了name属性,那么它运行正常。

以下是修改后的代码:

<a href="#" name="<?php echo $ep['ep_id'];?>" onclick="showEp(this.name)"><img      src="images/Database/releases/<?php 
if(isset($ep['ep_img'])){
    echo $ep['ep_img'];
} else {
    echo 'no_EP.png';
}
?> " height="125" width="125"/></a>

我仍然需要阻止链接的默认操作,但我很高兴ajax功能正常工作。