Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery Backbone.js中依赖菊花链的AJAX请求_Jquery_Backbone.js - Fatal编程技术网

Jquery Backbone.js中依赖菊花链的AJAX请求

Jquery Backbone.js中依赖菊花链的AJAX请求,jquery,backbone.js,Jquery,Backbone.js,我正在寻找菊花链主干请求,其中第二个请求取决于第一个请求的结果。我该怎么做才对呢?jQuery$.done()对我来说似乎不太合适。为了更好地解释,这里有一个假设的例子: 我有一份供应商清单,每个供应商都有一份他们向公司供应的零件清单。我要取所有供应商,然后取此供应商列表的所有零件。下面是一个示例代码,我正试图在没有运气的情况下使用它 var App = {}; App.Supplier = Backbone.Model.extend({ }); App.Part = Backbone.Mod

我正在寻找菊花链主干请求,其中第二个请求取决于第一个请求的结果。我该怎么做才对呢?jQuery
$.done()
对我来说似乎不太合适。为了更好地解释,这里有一个假设的例子:

我有一份供应商清单,每个供应商都有一份他们向公司供应的零件清单。我要取所有供应商,然后取此供应商列表的所有零件。下面是一个示例代码,我正试图在没有运气的情况下使用它

var App = {};

App.Supplier = Backbone.Model.extend({ });
App.Part = Backbone.Model.extend({ });

App.Suppliers = Backbone.Collection.extend({
   model: App.Supplier 
});

App.Parts = Backbone.Collection.extend({
    model: App.Part
})

var suppliers = new App.Suppliers;
var parts = new App.Parts;

var supplier_request = suppliers.fetch();

supplier_request.done(function(){
    parts.fetch_by_suppliers([supplier1, supplier2, ...]);
});

发生的情况是,第二个请求在收到第一个答复后立即发出,并且在
应用程序之前发出。供应商
模型被实例化。结果是——供应商列表保持为空,第二个请求与空供应商列表一起触发。

为了完成此菊花链,您需要将成功回调传递给
fetch
方法。
success
回调作为参数传递
(收集、响应)
。您可以按照以下方式重写示例中的代码:

...

suppliers.fetch({success: 
  function(collection, response){
     parts.fetch_by_suppliers(collection);
  }
});
js文档对此进行了很好的解释


希望这对你有帮助

您是否已尝试在
供应商
集合中侦听
重置
事件?应该在获取和重置集合后调用它。这看起来是一个尝试的好主意。当我必须在等待前两个请求完成之前执行第三个请求时,这会起作用吗?取决于谁在进行侦听。嵌套的
success
回调可能会更好。这对我来说很有效。这是一个无聊的时刻,因为我已经阅读了文档,但没有尝试它,因为我认为
$。done()
应该做与
成功
相同的事情。结果是,
$.done()
在收到AJAX响应后立即触发(jQuery事件与Backbone.js事件是分开的)。