jQuery .then() 和 success block 不能一起工作
jQuery .then() and success block do not work together?
我正在运行jQuery版本1.10.X(是的!我有点慢!(,面对这个奇怪的问题,如果我在 ajax 调用中有一个success
块,.then()
doneFilter
和failFilter
然而,在我看来,这似乎是我自己的代码库的问题。证明(.或者也许不是..(?我尝试了一个简单的例子。事情在示例中有效,正如我所期望的那样,success
和doneFilter
已被排队并执行。
现在在我的代码库中,与上面的例子完全相似,如果我有一个奇怪的success
块,.then()
部分不会执行。删除成功块可实现.then()
并执行doneFilter
/failFilter
。
奇怪的是,在我的同一个代码库中,如果我有 jQuery - 1.7.X,它们都玩得很好。
如果没有,关于如何找出问题是什么的任何提示?我已经检查了用作doneFilter
和failFilter
的方法。没有语法错误。它们只是包含控制台语句的匿名函数。
法典:
function getMonster (){
var theMonster = $.ajax({
url : "http://codepen.io/chriscoyier/pen/difoC.html",
success : function(data){
console.log("Monster Succeeded inside 'success' block");
}
});
return theMonster;
}
var theMonster = getMonster();
theMonster.then (function(){
console.log("Moster Succeeded outside");
}, function(){
console.log("Monster Failed :(");
});
编辑:
我正在做如下ajaxSetup
。
$.ajaxSetup({
beforeSend: function(jqXHR) {
if ($.cookie("mycookie") == null) {
console.info("Expired Session");
AppModule.timeout();
return false;
}
}
});
编辑 2 :以前有没有人遇到过这样的问题,或者我是唯一一个看到怪物失败的人?没有抛出一个异常,这使得找出问题所在变得更加困难。
你能尝试使用完成/失败吗,只是为了确保它正常工作:
function getMonster () {
var theMonster = $.ajax({
url : "http://codepen.io/chriscoyier/pen/difoC.html",
success : function(data){
console.log("Monster Succeeded inside 'success' block");
}
});
return theMonster;
}
var theMonster = getMonster();
theMonster.done(function(){
console.log("Moster Succeeded outside");
})
.fail(function(){
console.log("Monster Failed :(");
});
并添加"true":
$.ajaxSetup({
beforeSend: function(jqXHR) {
if ($.cookie("mycookie") == null) {
console.info("Expired Session");
AppModule.timeout();
return (false);
}
return (true);
}
});
正如我在花费大量时间进行调试后发现的那样,ajax
调用的success
块中存在逻辑访问问题。我试图访问返回null
对象的键,并尝试在循环中使用该方法。
我不确定jQuery是否应该在那里停止执行,因为它允许链接。我找不到解决方案的原因是浏览器控制台没有向我显示任何错误,而是在循环继续进行该特定迭代后停止执行。
我在脑海中问的问题是,即使成功块在某个时候失败,jQuery不应该继续执行.then()
回调吗?也许是,也许不是。
- 不能从angular2中的子组件指定父组件中的数组
- AngularJS UI路由器不能像ng路由器那样工作
- HTML5音频加载和播放获胜'我不能在iPad上工作
- 转义符不能与innerHTML一起使用
- JSON.parse没有'不能使用Javascript
- JS可以在Chrome中工作,但不能在Firefox中工作
- 砌体不能填补小缺口
- javascript扫雷器floodfill算法不能正常工作
- JavaScript指令不能像我想象的那样工作
- 为什么在这个网站上不能通过JS访问元素
- Facebook登录按钮没有'不能在Firefox上工作
- WebRTC视频聊天可以在FF中使用,但不能在Chrome中使用
- 为什么jQuery 1.8不能在IE8和InternetExplorer9中使用?(截至2012年9月的IE9最新版本)
- AngularJS:$q.dedefe()不能由工厂方法共享
- 不能在同一页上进行多个jquery幻灯片切换
- 不能在图像中的地图标记中使用花式框jquery插件的区域标记
- jQuery Datepicker可以在Safari中工作,但不能在FF或Chrome中工作
- javascript没有´我不能在joomla 3.0中工作
- 在ES6中,模块将导致多个网络调用,因为两个模块不能在单个文件中定义
- jQuery .then() 和 success block 不能一起工作