2012-02-21 64 views
0

我有一個包含項目列表的頁面,點擊ajax調用發送來獲取服務器響應的任何一個項目,響應頁面上都包含腳本(「內聯」),因爲它是腳本沒有被觸發的響應文本(「因爲瀏覽器沒有檢測到頁面刷新」)有沒有解決方法可以在ajax響應頁面上觸發腳本。
我嘗試使用eval(),但它使頁面無響應幾秒鐘(「妨礙網站性能」)是否有任何其他技術。在ajax頁面腳本不起作用。任何解決方法

這是我從ajax調用的響應,這個響應有一個腳本來顯示一個播放器,但是這個頁面上的腳本沒有被觸發。

<div class="audiomodule unlocked"> 
       <div id="locked" class="icon_holder"> 
       </div> 
       <div class="text_box"> 
        <p>Listen to Audio</p> 
        <p class="secondline">SLIDE 4</p> 
       </div> 
       <div class="audioholder"> 

     <div id="flashcontent1270162253375"></div> 

      <script type="text/javascript"> 
includeJWPlayerEmbed('http://172.200.88.55/player-licensed-54.swf','http://172.200.88.55/funds/skins/glow.zip', null, 'http://Healthcare-CurrentEconomicOverview.mp3', 'Healthcare-CurrentEconomicOverview.mp3', 'false', 'sound', '28', '222', 'flashcontent127','null'); 
      </script><div class="date floatLeft" style="display:inline;">Updated as of: 12/31/11</div> 

       </div> 
       <script type="text/javascript"> 
       window.onunload = function() 
       { 
       clearplayerCode("audioholder"); 
       } 
       </script> 
       <div class="button_holder"> 
        <div class="login_button"><a href="#"><span>Login</span></a></div> 

    </div> 
<div class="clear"></div>       


</div> 
+3

請出示一些代碼,因爲我不知道你想說什麼 – musefan 2012-02-21 11:14:04

+0

我貼了代碼看看 – 2012-02-21 11:23:16

回答

1

eval本身不妨礙性能。這是你的代碼需要很長時間才能執行。

實現您的目標的最佳方式不是發送JavaScript作爲響應,而是將它包含在頁面中,並從ajax成功處理程序調用它。您可能想從服務器發回一些參數,以便將它們傳遞給腳本。不使用eval()

+0

你能否給我提供一些如何實現這個功能的例子。 – 2012-02-21 11:24:05

+0

如果沒有看到您的代碼,請不要太多幫助。首先將您返回的任何腳本放在頁面上的ajax調用中,然後從您所在的位置調用它。 – 2012-02-21 11:46:41

0

你可以動態地將<script>元素內的響應文本(javascript代碼),你可以添加到您的文檔(例如,在<body>元素)

看到this example fiddle在行動

+0

我正在使用的框架是Mootools 1.1版 – 2012-02-21 11:27:04

+0

正如我寫的那樣,這個代碼只是一個概念性的例子,你可以很容易地用每個js框架來編寫(也只是在純js中)。 – fcalderan 2012-02-21 11:30:10

+0

這個js文件在主頁面或ajax響應頁面中包含哪裏 – 2012-02-21 11:43:52

相關問題