您好我正在尝试使用名为exJS()
的函数中的以下AJAX-PHP代码在我的HTML文档中插入JavaScript代码,以下是函数exJS()
的内容
var xmlhttp;
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("myDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","ajax.php", false);
xmlhttp.send();
这是ajax.php
<?php
echo '<script language="javascript">
alert("Hello World");
var testVAR = "Hello World";
</script>';
?>
现在,无论何时执行此函数exJS()
,警报都不起作用,但当我使用F12查看源代码并查看div#myDiv"
的内容时,我看到整个脚本都嵌入在div
但由于某种原因,JavaScript仍然没有注册。
我甚至尝试访问JavaScript变量testVAR
,当我点击F12时,我看到源代码中的变量,但是当我尝试访问该变量时,我得到一个错误,没有定义这样的变量。
请注意,这是一个简单的示例,因此没有错误,并且PHP代码回显很好,所有内容都是从PHP代码返回的,当我查看代码并查看{{{{ 1}}元素整个PHP echo内容都存在,但仍未执行。
此外,如果我直接打开div
文件它工作正常,我的意思是我得到警报消息,但是当我执行函数ajax.php
时,同样的事情不会发生进入jsEx()
但没有任何反应,没有警报。
答案 0 :(得分:0)
试试这个:
在我的WAMP
(win 7,php 5.4)&amp;在IE11
,Chrome
,Safari
,FireFox
和Opera
中工作得很好(我没有任何其他内容;-))
index.html
:
<head>
<title>Testing DYNAMIC JS</title>
<script type="text/javascript">
function exJS(){
var xmlhttp;
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)
{
var script = document.createElement('script');
script.onload = function() {
// alert("Script loaded and ready");
};
script.setAttribute("type","text/javascript");
script.text = xmlhttp.responseText;
document.getElementsByTagName('head')[0].appendChild(script);
}
}
xmlhttp.open("GET","ajax.php", false);
xmlhttp.send();
}
</script>
</head>
<body onload="exJS();">
</body>
</html>
在ajax.php
尝试:
<?php
echo 'alert("Hello World"); var testVAR = "Hello World";';
?>
如果您想在div
内运行脚本:
使用:
javaScript
:
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var MyDiv=document.getElementById("myDiv");
var arr = MyDiv.getElementsByTagName('script');
for (var n = 0; n < arr.length; n++)
eval(arr[n].innerHTML);
}
和php
:
<?php
echo '<script language="javascript">
alert("Hello World");
var testVAR = "Hello World";
</script>';
?>
希望它能帮助你。
答案 1 :(得分:0)
BTW jQuery有一个特定的AJAX函数来获取脚本:http://api.jquery.com/jquery.getscript/
如果你想避免使用jQuery,那么解决方法就是让你回复iframe,然后从iframe链接到生成实际Javascript的PHP。
E.G。样本ajax.php
if( isset($_GET['getscript']) ){
header('Content-type: application/javascript'); #or header('Content-type: text/javascript');
echo 'alert("The script is working.")';
exit;
}
echo '<iframe src="ajax.php?getscript=1" frameborder="0"/>';
?>