2012-02-21 65 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

相关问题