Javascript 执行异步HTTP请求-什么';这两者有什么区别?
这是用于在网页上加载Disqs注释的(默认/官方)JavaScript代码: (代码#1) (代码#3) 问题:Javascript 执行异步HTTP请求-什么';这两者有什么区别?,javascript,jquery,ajax,asynchronous,jquery-waypoints,Javascript,Jquery,Ajax,Asynchronous,Jquery Waypoints,这是用于在网页上加载Disqs注释的(默认/官方)JavaScript代码: (代码#1) (代码#3) 问题: 除了我现在使用jQuery进行这项工作这一明显的事实之外,代码#1和#2,以及#1和#3之间有什么区别吗?我可能是做错了什么事,而我完全错过了 为什么代码#2和#3在以$.noConflict()开头时不起作用?() 例如,这没有任何作用。(但在浏览器控制台中出现错误,“Uncaught TypeError:无法调用未定义的方法'noConflict'。) 两者之间没有区别,都是异步
$.noConflict()开头时不起作用代码>?()
两者之间没有区别,都是异步加载脚本。通过在控制台的DOM资源管理器中查看呈现的脚本标记,您可以自己查看。如果需要同步加载,可以使用第一种方法并设置
dsq.async=false代码>。如果您在执行某些操作之前依赖它加载,请考虑将依赖的操作添加到脚本的OnLoad回调中,这样它将是非阻塞操作并保持页面加载速度:
var disqus_shortname = 'paulund';
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.onload = function(){
// dependent code goes here
}
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
不,没有区别。我会使用方法3<代码>$。如果按您的方式使用,则noConflict
不应产生任何效果
未捕获的TypeError:无法调用未定义的方法“noConflict”。这意味着您已经在其他地方使用了$。无冲突。没有,没有区别。我会使用方法3,甚至可能缩短到$.getScript。@KevinB如果可能,请给出答案。还有,我刚才碰巧漏掉了一个问题。请看一下更新后的问题。顺便说一句,您的#2不需要脚本元素创建代码周围的
$({…})(
包装器-在任何情况下都不应该有$
,因为加载页面后您不需要文档就绪处理程序,但是,当整个内容包含在另一个函数中时,您也不需要来自#1版本的匿名函数。(在#1中立即调用的匿名函数可能是为了将dsq
变量保持在全局范围之外。)@nnnnnn因此,您建议我这样做:或者这样做:。对吗?如果你想使用#2,那么是的,我建议使用第一个pastebin样本。如果您想使用jQuery,那么我认为使用#3或您的第二个pastebin示例更有意义。在这里,如果可以,请看一看:。我不确定是什么导致了$.noConflict
把事情搞砸了。是的,$.noConflict
不应该影响任何东西<代码>jQuery(document).ready(函数($){…})允许您在..
中安全地使用$
而不会出现问题。我刚刚在控制台中注意到此错误:Uncaught TypeError:无法调用undefined的方法'noConflict'。经过寻找,我知道解决办法是。那么这些文档错了吗?不,这意味着您已经在其他地方使用了$.noConflict。(1)您是对的。我认为WordPress(我使用的CMS)加载了默认的jQuery文件。但我注意到它的结尾是这样的:jQuery.noConflict()代码>。这就解决了难题。你能把它加到你的答案里吗?这样我就可以给它打分了?(2) 我认为使用getScript
不是一个好主意,因为它将缓存设置设置为false。因此,我必须执行$.ajaxSetup({cache:true})代码>。相反,我计划坚持使用.ajax
本身。如果我错了,请告诉我,如果没有错,请在您的答案中添加一条注释,以便填写所有详细信息以供将来参考。:)非常感谢你!
jQuery(document).ready(function($){
$('#comments').waypoint(function () {
var disqus_shortname = 'paulund';
$(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
}, { offset: '100%', triggerOnce: true });
});
jQuery(document).ready(function($){
$('#comments').waypoint(function () {
var disqus_shortname = 'paulund';
$.ajax({
type: "GET",
url: "http://" + disqus_shortname + ".disqus.com/embed.js",
dataType: "script",
cache: true
});
}, { offset: '100%', triggerOnce: true });
});
$.noConflict();
jQuery(document).ready(function($){
$('#comments').waypoint(function () {
var disqus_shortname = 'paulund';
$.ajax({
type: "GET",
url: "http://" + disqus_shortname + ".disqus.com/embed.js",
dataType: "script",
cache: true
});
}, { offset: '100%', triggerOnce: true });
});
var disqus_shortname = 'paulund';
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.onload = function(){
// dependent code goes here
}
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();