我有一种情况,我的ajax调用必须以特定的顺序执行。我在其他情况下使用了jQueryDeferred对象,但似乎找不到一种方法来使其正常运行。
我有一个函数,在它的生命周期中执行许多ajax
请求。一些请求将在其他请求的成功回调期间执行。
我的问题:当调用时,是否有方法将所有嵌套的延迟对象返回到原始的$?
一个简单的例子是:
function nestedAjax() {
$.get("/", function(){
console.log("First ajax done.");
$.get("/", function(){
console.log("Second ajax done.");
});
});
};
我正在尝试使用
nestedAjax
函数来使用$。when()
和$。done()
如下所示:
$.when(nestedAjax()).done(function(){
console.log("Complete");
});
控制台输出读数为:
> First ajax done.
> Second ajax done.
> Complete.
我可以返回第一个
get
,以实现此目的:
> First ajax done.
> Complete.
> Second ajax done.
但显然这不是我所需要的。任何帮助都将不胜感激。
由于某种原因,无法对上述答案添加评论。
所以我在这里加上我的评论。只有当ajax调用很快并且在返回dfd.promise()之前返回时,上述答案才有效。
我也有同样的问题。正如你所看到的。返回的延迟对象声明它是“挂起的”:http://jsfiddle.net/BtEKa/
实际上,您不需要额外的延迟对象。通过使用then()
链接,您可以做您想做的事情:
function nestedAjax() {
return $.get("/echo/json/").then(function(result1){
console.log("First ajax done.");
if (result1) {
return result1;
} else {
return $.get("/echo/json/").then(function(nestedResult){
console.log("Second ajax done.");
return nestedResult;
});
}
});
};
我添加了一些逻辑,因为我认为这可能是您同步执行此操作的原因。之后,您可以在$中使用结果。如果
如此:
$.when(nestedAjax(), $.get("/something/else")).then(function(nested, other) {
console.log("Complete.", nested, other);
});
其实很简单。虽然所有AJAX调用都是延迟对象,但我仍然为方法本身使用一个。
function nestedAjax() {
var dfd = $.Deferred();
$.get("/echo/json/", function(){
console.log("First ajax done.");
$.get("/echo/json/", function(){
console.log("Second ajax done.");
dfd.resolve();
});
});
return dfd.promise();
};
问题内容: 我需要根据上一个调用中的数据连续进行6个ajax调用。我将每个呼叫嵌套在上一个呼叫的成功中。我的问题是格式化代码的最佳方法是什么,以使编辑器中的代码行数不超过一百万行? 忽略方括号,语法对于这个问题并不重要。 问题答案: 你可以做这样的事情
问题内容: 我试图在加载器图标和成功的html之间添加一个小的延迟(2秒)。 我尝试使用的是setTimeout并放入延迟号。这是行不通的,所以我希望您能告诉我正确的方法是什么。 我的ajax代码: 现在,它运行得非常快。希望有人能帮忙。 问题答案: 应该用在里面 。
下面的问题-我必须多次调用ajax函数,当所有函数完成后,将所有结果放入数组。我想到了这个: 在这里小提琴:http://jsfiddle.net/Fkd9n/ 一切似乎都很正常,“console.log(data)”用响应文本写出对象,但“console.log(val.name)”总是“未定义”。那么,一旦所有调用完成,如何将所有结果合并到一个数组中呢? 谢谢你!
问题内容: 在某些情况下, 加号根本不会发布,将发送空格。我已经试过了: 没有运气。有人知道如何解决此问题吗? 问题答案: 应该 或简单地
问题内容: 这是我在elasticsearch中存储在索引上的数据类型。我必须找到包含主要成分牛肉(且重量小于1000)和成分-(辣椒粉且重量小于250),(橄榄油和重量小于300)以及所有其他成分类似的食谱。 索引的映射是 我的查询是 但这给了Null。有人可以帮我吗?我认为我没有正确使用嵌套查询 问题答案: 试试这个:
问题内容: 我有一个jQuery Ajax请求,我想用文本输入调用它,因此我将其嵌套在里面。这很好。 但这有时表现为越野车。当我非常快速地输入一些文本时,我得到的输入单词的结果中省略了原始输入单词的最后几个字母(可能是浏览器的某些错误)。我希望在没有输入活动持续一秒钟的情况下发送ajax请求,如果我很快输入文本并休息一秒钟(意味着我进行了输入)。我怎样才能做到这一点? 问题答案: 听起来好像是从先