2010-09-27 82 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