微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在ajax中包含php文件时,Javascript无效

我有一个下拉选择列表和一个按钮,我在其中插入了一个onclick事件,这样每当有人点击该按钮时,它将调用一个基本上包含ajax的函数,当执行它时将包含一个PHP文件.在我的PHP文件中,它从所选的下拉列表中获取值,然后它将显示一个警告选项,但它不显示任何警报.

以下是我的代码: –

<html>
<head>
<script>
function showUser(str)
{
if (str=="")
  {
  document.getElementById("txtHint").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("txtHint").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","user.PHP?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>

<form>
<select name="users1" onchange="showUser(this.value)">
<option value="">Select a person:</option>
<option value="1">Peter Griffin</option>
<option value="2">Lois Griffin</option>
<option value="3">Glenn Quagmire</option>
<option value="4">Joseph Swanson</option>
</select>
</form>
<br>
<div id="txtHint"><b>Person info will be listed here.</b></div>

</body>
</html>

user.PHP

<?PHP
$q=$_GET["q"];
if($q ==1)
{
    echo '<script type="text/javascript">
    alert("Hello")
    </script>';
}
else {
    echo "No";
}
?>

任何帮助将不胜感激,并感谢您的帮助提前:)

解决方法

因此,正如Chris已经指出的那样,如果你使用你所描述的AJAX调用来返回一些文本,你可以将它放在你的页面中,并进行DOM更新,例如:

document.getElementById("txtHint").innerHTML=xmlhttp.responseText;

这样可行.但是如果你的responseText包含javascript,它只会被发布到文档中.您的页面已经完成加载,因此不会执行.

但是,您显然希望从AJAX调用中产生两种行为.除了将一组用户数据发布到txtHint div之外,您还希望弹出一个警报.为此,您可以在发布到txtHint div的点之后,在onreadystatechange函数中放置警报的代码.

从您的问题中不清楚您想要控制警报的逻辑.如果您希望警报为选择的某些选项说“Hello”而对其他选择说“No”,那么您可以只测试您的选择输入:

if (str=="1") alert("Hello");
else          alert("No");

相反,如果警报的内容应该取决于您的AJAX调用返回内容,那么您将有一些基于xmlhttp.responseText的其他逻辑.也许您甚至会将警报的主体写入user.PHP发回的响应中.然后你可以从responseText中解析出来,在你的警报中使用它,将其删除,然后使用其余的来设置txtHint的内容.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐