我应该在哪里发表退货声明

时间:2012-01-21 17:08:55

标签: javascript backbone.js

我在我的应用程序中使用Backbone.js和jQuery 1.7,我在构建集合时遇到了一些问题。在集合中我有方法,它应该返回一些对象。我在$ .ajax(...)success()函数中“返回”。

在这种情况下,我收到“undefined”而不是预期的对象。我明白,问题在于“返回” - 它使success()函数返回一些值。但我需要getDomainZones()方法做一个返回。我该怎么办?

window.DmnList = Backbone.Collection.extend({
        model: DmnItem,
        localStorage: new Store("hosting.WhoIs"),
        destroyAll: function (options) {
            while (this.models.length > 0) {
                this.models[0].destroy(options);
            }
        },
        getDomainZones: function(){
            $.ajax({
                url: 'http://hosting/rest/getDomains',
                type: 'GET',
                dataType: 'json',
                cache: 'false',
                timeout: 5000,
                success: function(data) {
                    console.log(data);
                    return data;//problem here
                },
                error: function(jqXHR, textStatus, errorThrown) {
                    console.log("Error[getDomainZones]: " + textStatus);
                    console.log(jqXHR);
                },
            });
        }
});

1 个答案:

答案 0 :(得分:3)

  

我应该在哪里放置return语句”

无处。您无法返回异步 AJAX请求的结果。

任何依赖于data的代码都必须在 {@ 1}}回调中被称为


一种可能性是让您的success方法接收一个将在收到回复时调用的函数。

getDomainZones

然后你将函数传递给getDomainZones: function( callback ){ $.ajax({ url: 'http://hosting/rest/getDomains', type: 'GET', dataType: 'json', cache: 'false', timeout: 5000, // success: callback, // alternative if there's no other work to do. success: function(data) { console.log(data); callback( data ); // invoke the function received }, error: function(jqXHR, textStatus, errorThrown) { console.log("Error[getDomainZones]: " + textStatus); console.log(jqXHR); }, }); } ,当收到响应时,getDomainZones将调用你传递的函数,并将getDomainZones传递给它。

data