Tag: 异步

jQuery:按顺序加载脚本

我正在尝试使用jQuery动态加载一些脚本: var scripts = [‘script1.js’,’script2.js’,’script3.js’]; $.each(scripts , function(i, val) { $.getScript(val, function() { console.log(‘loaded ‘+ val); }); 但有时加载脚本的顺序会发生变化。 如何在上一个脚本成功加载后加载每个脚本?

jquery when / then(也是当/完成时)没有等待

我看过许多使用这种语法的示例,但我看不出我做错了什么。“then”函数在ajax调用返回之前运行。 我也试过使用$ .deferred和其他一些模式无济于事。 有人能看到我错过的东西吗? 我已经调试过,可以在ajax调用返回成功(或错误)数据之前看到在done / then内部进行的调用。 谢谢你的帮助。 主要电话: this.addFirstTask = function(task) { var totalHours = GetHours(); $.when(totalHours).done(function (data) { task.TaskHours(data); self.add(task); }); }; 它调用以下ajax函数: function GetHours() { $.ajax({ url: “/api/tst/GetMyData”, type: ‘GET’, dataType: ‘json’, success: function(data) { return data; }, error: function(data) { return 0; } }); }; 谢谢! 验尸: 除了将返回添加到ajax调用之外,根据其他建议,我从ajax调用中删除了成功和错误,并将addFirstTask更改为: this.addFirstTask = function(task) […]

如果Google Analytics(分析)发生故障,我该如何保持网站正常运行?

好吧它是2013年1月19日22:30 NZST和大多数互联网似乎已经爬行,因为Google Analytics似乎运行速度非常慢。 Stackoverflow,Firefox.com,reddit和谷歌搜索都很慢。 对我来说最重要的是,我的生产商网站运行缓慢或根本没有加载。 不,这不仅仅是我的连接,我也在3G手机上测试了它。 没有Google Analytics的网站似乎运行正常。 这是一些发生的截图 这位于Firefox窗口的左下角。 它会像那样在那里停留20多秒。 如果它无法连接,我希望它在3秒后消失。 这个旋转的绿色图像位于Firefox选项卡中,只是坐在那里使它看起来像页面仍然加载20秒以上。 如果它无法连接,我希望它在3秒后消失。 现在它可能不是谷歌分析,我的国家’国际网关可能运行缓慢或其他东西。 但有证据表明它可能是谷歌分析。 现在,即使它不是谷歌分析,那么如果服务完全失效,我仍然会对某些方法感兴趣。 所以假设我们假设Google Analytics数据中心发生大火并且灭火系统失败了。 现在,Google Analytics几天完全脱机。 没有备份服务器。 没有备用数据中心。 假设情景确定。 现在我的网站仍然需要运行,因为我无法让我的网站依赖Google Analytics服务。 但是,如果服务实际上及时运行,那么分析function可以作为额外的奖励。 好的,我在这里抛出一些想法: 我可以添加到我的脚本中的超时是否会取消与Google Analytics的连接并停止请求/下载如果花费的时间过长? 然后它会在2秒后继续加载我的网站。 或者更好的是,也许它可以完全加载我的网站,然后在我的网站完全加载后使用Ajax向Google Analytics发送请求? 为什么默认情况下不这样做? 这是我们必须使用的代码,它当前在结束标记之前插入。 var _gaq = _gaq || []; _gaq.push([‘_setAccount’, ‘UA-123456789-1’]); _gaq.push([‘_trackPageview’]); (function() { var ga = document.createElement(‘script’); ga.type = ‘text/javascript’; ga.async = […]

喜欢做多个依赖的ajax同步调用的方法

我已经看到了做多个依赖的ajax同步调用的不同方法。 其中两个被广泛采用的是jquery延迟方法和成功回调。 我的问题是: 1)使用一个在另一个上的优势是什么? 2)在什么情况下,一个人比另一个人更受欢迎? 3)还有比这2更好的方法吗? // jquery defer method var defer = $.when( $.get(‘ajax_call_1’); ); defer.done(function () { $.get(‘ajax_call_2′); }); // callback on success $(function(){ $.ajax({ url:’/ajax_call_1’, data: { }, success: function(data){ $.get(‘ajax_call_2’); } }); } });

Ajax async false已弃用?

我正在使用jQuery 1.7并且我使用async:false来处理我的AJAX,但我已经了解到这个函数已被弃用。 我需要使用回调,但这不起作用: $(“#form”).submit(function(e) { var cnf; $.ajax({ type: “POST”, url: ‘page.php’, data: $(‘#form’).serialize(), async: true, success: function(responseText) { if(responseText.indexOf(‘err’) != -1) { cnf = “error”; } else { cnf = “success”; } return callBack( cnf ); }, error: function() { cnf = “error”; return callBack( cnf ); } }); if(cnf == “success”) { alert(‘ok’); […]

迭代不确定的延迟项目数组

假设我有一个很长的列表,其中每个元素都需要异步调用fetch。 我想在该列表的顶部编写一个API,以便消费者可以简单地调用“next()”或以其他方式同步迭代列表。 理想情况下,我会有这样的东西: while ((foo = generator.next()) != null) { process(foo); } 但是,我发现自己绊倒了延迟调用的语义,我不知道如何将这种硬编码模式转换为通用循环: $.when(foo).then(process1AndFetch2) .then(process2AndFetch3) .then(process3AndFetch4) … 据推测,我可以通过回调自己做到这一点 var callback = function() { process(); fetch(callback); } fetch(callback); 但是后来我的筹码会变得非常深,这就是为什么我在推迟工作。 将这种异步行为转变为同步API是否有任何常见的嫌疑?

表单OnSubmit等待jQuery Ajax返回?

我想在表单onsubmit上触发$.ajax ,并且只有在Ajax返回有效之后才return true 。 例如: 在Javascript中: function ajaxValidation() { $.ajax({ async: false, type: “POST”, url: “ajax.php”, data: { myString: $(“#myString”).val() } }).success(function( response ) { alert(response); //Got ‘ok’ if (response==”ok”) { return true; //mark-1 } else { alert(“Oh, string is wrong. Form Submit is cancelled.”); } }); return false; //mark-2 } 当我提交时,我得到警报,但它返回’假’,因为它跳到最终return false线。 为什么? 我不明白。 […]

jQuery ajax Page Reload

我们正在制作多个ajax请求,以便在Web应用程序中“保存”数据,然后重新加载页面。 我们遇到了一种情况:(因为请求是异步的),在ajax调用完成时或之前重新加载页面。 对此的简单解决方案是使用“async”:false选项进行ajax调用,强制进行同步调用。 这似乎有效,但是在任何调用执行延迟运行之前运行的对话框代码。 任何意见是极大的赞赏! 还应该注意的是,在重新加载之前放置一个alert()允许进行ajax请求。 (警报显然会延迟重新加载,以便成功通过请求) 更新代码示例: $(“.submit_button”).click(function(){ popupMessage(); sendData(); //the ajax calls are all in here location.reload(); }); function sendData() { //a bunch of these: $.ajax({ “dataType”: “text”, “type”: “POST”, “data”: data, “url”: url, “success”: function (msg) {} }).done(function( msg ) { }); }

Jquery将css添加到头部

我异步添加一些脚本和样式表到我正在构建的项目,并希望将样式表全部组合在HEAD中。 home $(document).ready(function() { // some code }); 我目前正在使用 $(“head”).append(“”); 哪个工作正常,但它将它添加到我的HEAD部分的底部,如示例中所示。 我的OCD想要在我的第一个样式链接之前或在最后一个样式链接之后添加它。 谢谢你的期待。

以编程方式创建jQuery承诺的链式序列

我有一个函数通过在列表中的每个文件上调用单个deleteFile(filePath)来删除列表中的文件数组filePaths(我正在使用的一些APIS不支持批量删除)。 函数deleteFile返回jQuery promise并在删除文件时解析/拒绝。 function deleteFiles(filePaths) var deferreds = $.map(fileKeys, function (val, index) { return deleteFile(filePath); }); $.when.apply($, deferreds).then(function (schemas) { console.log(“DONE”, this, schemas); deferred.resolve(); }, function (error) { console.log(“My ajax failed”); deferred.reject(error); }); 我得到.reject调用列表中的一些文件(我知道它们存在),所以我想我可能需要将filePaths数组变成一个链接的调用,比如一个队列(b / c这个不是什么$。什么,是吗?它似乎立刻启动它们)。 我知道如何做到这一点(如.deleteFile(path1).deletePath(path2)等等,当它们在这样的数组中时。 任何帮助都提前得到赞赏。