我正在玩AJAX。
如果我这样做
echo "helllo"
在PHP文件中它可以正常工作。
但是,如果我做了类似
的事情echo "<script language=Javascript> alert('hi');</script>";
在PHP文件中,alert()
没有出现。
任何人都知道我做错了什么?
示例:
在我的html文件中我有这个
<div id='something'> </div>
我希望将php文件中的响应文本放在上面:
if (req.status==200) {
document.getElementById('something').innerHTML=req.responseText;
}
如果我改为:
if (req.status==200) {
document.getElementById('something').innerHTML="<?php echo 'hi';?>";
}
它工作正常,响应文本将是---&gt;喜
但如果我在我的php文件中echo "\"<?php echo 'hi';?>\"";
,
响应文本将是“”
我希望我能解释清楚
答案 0 :(得分:1)
使用$.load(),将对该脚本进行评估。
$("#something").load("request.php");
也许jQuery也使用了eval(),因此它更安全,但只要load()只能在同一个域上运行,你应该控制将要评估的东西。
然而,它更容易使用,因为你不必自己解析Fragment for script's:)
答案 1 :(得分:0)
另一种方法:使用eval
var result = ajaxResponseText;// "alert('hi')"; in your case
eval(result);
答案 2 :(得分:0)
您必须使用返回的数据创建脚本标记;
var script = document.createElement('script');
stript.innerHTML = req.responseText;
document.getElementsByTagName('head')[0].appendChild(script);