脚本数据类型在jquery中

时间:2011-03-04 14:55:37

标签: jquery

在jquery网站上,它说:

“script”:将响应评估为JavaScript并对其进行评估。

我通过ajax调用和一大块标记得到一块js代码(没有脚本标记)。为了使标记起作用,我需要js代码尽快执行。我是否必须将JS代码附加到dom上才能执行它,或者正如它在jquery网站上所说的那样,只要它得到它就会自动执行?

有人可以帮我吗?

谢谢, →

4 个答案:

答案 0 :(得分:2)

如果你指的是jQuery.getScript(),它应该立即执行函数返回的代码。实际上,根据文档,您可以指定一个回调参数,并且此回调是通过加载的脚本传递的,但是在调用回调之前已经执行了加载的脚本。因此,您不必执行任何操作或将其添加到DOM,它将在下载后立即执行。此外,不需要像外部.js文件那样需要脚本标记。

答案 1 :(得分:0)

如果我正确理解您的问题,如果您使用$.getScript(),则您请求的.js文件将在收到后立即执行。 API docs状态位于顶部。

如果您要求某些服务只返回恰好是JavaScript标记的文本,那么您将不得不将其包装在<script>标记中,然后将其附加到您的DOM。看看这个link - 它可以很好地介绍你如何做到这一点。它是更纯粹的JavaScript,但是你可以根据需要缩短使用jQuery的一些东西。

本文的一个关键部分是这段代码,展示了如何将JavaScript动态添加到DOM:

var headID = document.getElementsByTagName("head")[0];         
var newScript = document.createElement('script');
newScript.type = 'text/javascript';
newScript.onload=scriptLoaded;
newScript.src = 'http://api.flickr.com/services/feeds/photos_public.gne?tags=sunset&format=json';
headID.appendChild(newScript);

希望这有帮助。

答案 2 :(得分:0)

也许你应该做两个不同的Ajax查询:

  • 使用dataType:“script”来获取(并执行)脚本
  • 一个数据类型:“html”代表您的内容。

最简单的方法可能是将您的脚本(正确标记)包含在其余的响应中。我认为它一旦被包含在DOM中就会被评估。

答案 3 :(得分:0)

道格拉斯·克罗克福德frown upon(参见最后一条提示)的另一种方法是eval从服务器收到的JavaScript代码。

$(document).ready(function(){
    var scriptString = "alert('hi');";  //assume I get this from the server 
                                        // as a string of JavaScript commands
    eval(scriptString); //executed immediately
});