- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将 jquery ajax 对象存储在一个数组中,这样我就可以根据用户触发的事件手动取消调用(如果它没有返回)。这些是我希望运行很长时间的 ajax 调用。
JavaScript
var ajaxCalls = [];
ajaxCalls[0] = $.ajax({...});
$("#cancelButton").on("click", function() { ajaxCalls[0].abort(); });
存在的问题是调用abort()方法后jqXHR对象从数组中消失
现在,在管理我的对象的内存时,这看起来很棒,因为它神奇地自行删除并很好地清理。但是,它在我的代码中留下了一个反模式,看起来我并没有自己清理。这也违背了我为添加方法创建删除伴随方法的目的。
这是有原因的吗?如果我的数组包含超过 1 个对象,它会完全适本地重新调整自身大小。
这个数组如果字母是 jqXHR 对象
['a', 'b', 'c', 'd']
当 jqXHR 对象 'b' 完成时变成这个数组
['a', 'c', 'd']
阅读代码,人们会预料到会发生这种情况
['a', null/undefined, 'c', 'd']
为什么?
编辑:
这是我能够重现我正在做的事情的 fiddle 。
作为直接数组元素:
[ jqXHR, jqXHR, jqXHR ]
http://jsfiddle.net/itanex/uHX8q/
作为数组中的键值对象元素:
[ { key: "key", value: jqXHR }, { key: "key", value: jqXHR } ]
最佳答案
complete
回调在您中止调用时运行。所以会发生这种情况:
ajaxCalls.pop();
还有你的 jqXHR 对象。
添加了 console.log
以显示 pop
:
关于javascript - jqXHR 对象从数组中删除自身和容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18597915/
我使用: var jqXHR = $.ajax(settings); jqXHR.success(function(result){}); jqXHR.error(function(result){}
我将 jquery ajax 对象存储在一个数组中,这样我就可以根据用户触发的事件手动取消调用(如果它没有返回)。这些是我希望运行很长时间的 ajax 调用。 JavaScript var ajaxC
正如标题已经提到的,有没有办法检查一个变量是否是真正的 jqXHR? 我的意思是(虚构的): var resource = $.get('/resource'); if (resource insta
我最近在 jQuery 网站上看到了弃用通知。 Deprecation Notice: The jqXHR.success(), jqXHR.error(), and jqXHR.complete()
我正在尝试为 jquery 文件上传执行取消按钮(http://blueimp.github.io/jQuery-File-Upload/)。 我的代码: var jqXHR = $('#fileup
我正在创建一个 ajax 实用程序来与我的服务器方法交互。我想利用 jQuery.ajax() 调用返回的对象的 jQuery 1.5+ 延迟方法。情况如下。 服务器端方法始终返回 JSON 对象:
我是 AJAX/Jquery 的新手,并且在我的程序上创建了错误响应,但我遇到了错误如何出现的问题,主要是 jqXHR.responseText。 error: function(jqXHR, tex
对于我的 jQuery 应用程序,我想实现延迟加载。因此,我创建了一个对象,其中包含我所有的 jqXHR promise 。 当我现在将所有内容分组到一个声明中时 var resultset = ne
在我的服务器上(用 Go 编写),我发回了一个自定义 header 字段,当我进行 ajax 调用时我试图从中读取该字段。 $.ajax({ url: url, suc
我正在使用 Backbone 开发一个新应用程序,但尚未编写后端 API,因此我正在尝试使用项目本地的 JSON 数据文件。我将其位置设置为 urlRoot,并且能够获取它并接收回 jqXHR 对象。
jqXHR.status 的可能值是什么? 到目前为止,我可以看到以下内容: if (jqXHR.status === 0) { msg = 'Network Problem'; } else if
在我的 ajax 调用中,responseHeader('Location') FF 始终为空。有谁能够帮助我?顺便说一下,它是一个 CORS。 $.ajax({ ur
我有一个可以引发异常的 Java Spring MVC Controller 。我有一个 @ExceptionHandler 设置来处理这些错误,我想用它来将异常的消息返回给调用者。 服务器代码是:
在 jQuery.ajax() 调用 jqXHR.getAllResponseHeaders() 后,不会返回所有 header 。服务器响应以下 header : Connection: keep-
来自deferred.fail() page : Description: Add handlers to be called when the Deferred object is rejected
我正在使用 JQuery 的 $.when 和 $.get 来获取一些数据并对其执行某些操作。当获取它或对其执行某些操作时出现错误时,我想处理该错误,并根据我正在获取的数据/在哪个路径上获取它,以不同
基本上我使用 jqXHR 和 asmx。如果可能的话我想这样做; 总的来说,在每个页面中,我都会使用 6-7 个带有同步或异步的 ajax 调用,具体取决于它是哪种方法。但是当其中一个出现错误时,我想
我正在尝试使用 jquery 提交登录表单(这是一个弹出式 div)。如果表单验证失败,那么我只想在弹出 div 上显示错误消息,并在 ajax 调用进入错误函数时停止关闭该表单(弹出窗口),因为页面
我有以下 Ajax 调用: $.ajax({ type: 'POST', contentType: 'application/json', url: r
我有 SendRequest 对象,该类具有类似的功能 request: function(args) { return $.ajax.apply
我是一名优秀的程序员,十分优秀!