2010-09-27 84 views
0

我正在玩AJAX。ajax返回php/javascript代码

如果我在PHP文件做

echo "helllo" 

它工作正常。

但是,如果我在PHP文件做一些像

echo "<script language=Javascript> alert('hi');</script>"; 

,该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';?>"; 
} 

它工作正常,响应文本将是---“喜
,但如果我在我的PHP文件做echo "\"<?php echo 'hi';?>\"";, 响应文本将是“”

我希望我解释

回答

0

很清楚另一种方法:使用eval

var result = ajaxResponseText;// "alert('hi')"; in your case 
eval(result); 
+1

这是可怕的,教人学习。 – alex 2010-09-27 04:54:57

+0

我在Sunny没有发布这段代码时回答了这个问题。我怎么知道 ?只是提供另一种方式来玩弄javascript。我没有看到探索新事物有什么不妥 – jebberwocky 2010-09-27 05:32:13

+0

我不明白为什么人们会低估包含单词'eval'的每个答案。 OK,'eval'可能很危险,但1)它确实有效2)没有100%安全的方式来执行OP所要求的操作(这是好的 - 或者比如添加脚本标记)3)if你有PHP的回报控制,那么没有太多担心 – nico 2010-09-27 08:25:20

0

您必须使用返回的数据创建脚本标记;

var script = document.createElement('script'); 
stript.innerHTML = req.responseText; 
document.getElementsByTagName('head')[0].appendChild(script); 
1

使用$.load(),脚本将被评估。

$("#something").load("request.php"); 

也许jQuery的存在也使用eval(),所以它is'nt更安全,但只要load()方法只适用于同一个域ü应该拥有控制权将被评估的事情。

但是,它更容易使用,因为你did'nt要解析的片段脚本是在你自己:)

+0

谢谢你! – Sunny 2010-09-28 06:12:10