jQuery   发布时间:2022-04-19  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了为什么jquery发送GET请求动态加载的脚本标记?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用 jquery的ajax方法从服务器动态加载一些html片段,并将片段插入div.在摘录中有一些< script>外部脚本的标签.

我在制作ajax请求时在Chrome工具栏中查看了网络活动,并发现脚本标记的GET请求附加了类似于?_ = 1234567890的内容.我也注意到了
GET请求的发起者是jquery.我知道jquery为AJAX请求执行此操作以避免使用缓存版本,但我希望缓存脚本.

让我感到惊讶的是< script>标签由jquery用ajax获取.当您插入< script>标记到DOM中,浏览器是否应负责加载和执行它?为什么jQuery在这里采取行动?

如果我跳过jquery并使用普通的js附加一个< script>标记到DOM,浏览器将加载并解析它,对吧?为什么浏览器不执行此操作并让jquery接管?

==============代码=============

用于加载HTML代码段的代码

var url = "/"+modulename+"/setTings/"+this.SELEctedProduct.id;
$.get(url,null,function(snippet){
  $("div#content").empty().html(snippet);
}

html片段:

<script type='text/javascript' src="http://www.staticcdn.org/somelib.js"></script>

<script>
  <!--some html rendering code that depends on somelib-->
</script>

解决方法

由于您在Chrome中,这是一个提示.如果您将鼠标悬停在网络呼叫源上,则会在调用显示堆栈堆的弹出窗口.在这样的调用上执行此操作会暴露jquery.js:6717的_evalUrl是在第一次在页面调用脚本时调用的(setGlobalEval禁止在同一页面上第二次调用该脚本).

_evalUrl: function( url ) {
    return jQuery.ajax({
        url: url,type: "GET",dataType: "script",async: false,global: false,"throws": true
    });
}

由于该代码不使用缓存选项,因此您有以下几种选择:

>使用未推荐的https://api.jquery.com/jQuery.ajaxSetup/为所有呼叫设置不缓存,因此您必须覆盖所有非缓存呼叫的缓存.我提到了所有电话吗?
>编辑源.
>不要压力并留下它们的样子.
>一个纯粹的猜测,但您可以只获取内容并将其自己插入DOM中,并自行处理渲染后果.

看起来这是作为在调用中插入DOM的内容结构化/清理的一部分来完成的.

大佬总结

以上是大佬教程为你收集整理的为什么jquery发送GET请求动态加载的脚本标记?全部内容,希望文章能够帮你解决为什么jquery发送GET请求动态加载的脚本标记?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。