2011-07-04 72 views
-2

好吧,在這裏我堅持了整整一天,以解決即時通訊面臨的問題。讓我來解釋......如何在ajax響應頁面內執行一個包含javascript函數的頁面?

*photo.php - (Main php file)* 
…. 
…. (header goes here…) 
…. 
*<script src="scripts/photogallery.js" type="text/javascript"></script>* 
…. 
…. (ajax refresh script goes here…) 
…. 
**http1.open("GET", "photo_x.php?id1=" + escape(sIdtn1), true);** 
…. 
…. (body/coding goes here…) 
…. 
…. **<script type="text/javascript"> initGalleryScript(); </script> // this script is inside the ajax refresh tag** 
…. 

*Photo_x.php - (ajax refresh file)* 
…. 
…. (coding goes here…) 
…. 
…. **<script type="text/javascript"> initGalleryScript(); </script> // I need to execute this script which is not working currently.** 

請幫我找出一個解決方案來執行Ajax響應頁面內的javascript函數...提前

感謝。

+1

通常情況下,ajax響應處理程序可讓您指定'成功'處理程序。這就是你要調用你需要的其他功能的地方。你不指定你正在使用哪個(如果有的話)ajax庫,所以這是最好的。 –

回答

0

你的問題不是很清楚你真正想做什麼,但純粹由你的問題的主題來判斷,我猜你想從你的服務器發出一個ajax請求,並獲得一些你可以返回的javascript在當前頁面的上下文中執行。

如果您需要從服務器取回數據,那麼您可以使用JSON或JSONP,這是一種從服務器以JavaScript格式返回數據的方式,其中數據表示爲可以只是數據的JavaScript數據結構執行並由瀏覽器中的javacscript引擎進行解析。

在某些情況下,ajax請求本身包含您希望調用JSONP響應的主JavaScript中的回調函數的名稱。這裏討論這個回調如何工作:http://s5.parature.com/UserGuide/Content/API/ParatureApiJSON.html#JSON_Callback_support

如果您爲服務器返回的內容編寫自己的響應處理程序,則可以對返回的代碼調用eval,並且可以在響應中包含任何類型的JavaScript,包括代碼。這樣做時需要注意一些安全問題,但也可以採用這種方式。

如果提前知道代碼(通常是這樣),那麼您可能實際上並不需要從服務器返回代碼。您可以將代碼包含在原始頁面中,也可以通過插入腳本標籤來動態加載,然後ajax響應可以只是數據。

+2

你不能把函數放在JSON中。 – Pointy

+0

我主要考慮JSONP(雖然我最初編寫JSON),但無論如何,我已經修改了我的答案。 – jfriend00

+0

您可以在JSON中將函數寫入字符串,然後使用'eval()'。這將是非常醜陋的,但。 –

相關問題