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
Javascript 如何从fetch返回ajax结果_Javascript_Backbone.js - Fatal编程技术网

Javascript 如何从fetch返回ajax结果

Javascript 如何从fetch返回ajax结果,javascript,backbone.js,Javascript,Backbone.js,我已经修改了集合重写fetch方法,但是fetch没有返回任何内容 var Friendscollection = Backbone.Collection.extend({ model:Person, url:"https://api.parse.com/1/classes/_User/", idAttribute: "objectId", parse: function(data) { return data.results; }, initialize:function(

我已经修改了集合重写fetch方法,但是fetch没有返回任何内容

var Friendscollection = Backbone.Collection.extend({


model:Person,
url:"https://api.parse.com/1/classes/_User/",
idAttribute: "objectId",
parse: function(data) {

    return data.results;
},



initialize:function(){

   },

fetch: function(options) {
        var cur_user= Parse.User.current().id;           
          var res;  
     var ajax = $.ajax;        
   $.ajax({
//query rest che trova tutti gli amici dell'utente corrente        
type: 'GET',
async: false,
headers: {'X-Parse-Application-Id':'qS0KLM--h***PiTS3VMk','X-Parse- 
REST-API-Key':'nh3eoUo***Tks9--JIfIt1Gm'},
url: "https://api.parse.com/1/classes/_User/?where={%22$relatedTo%22:\n\
   {%22object%22:}",

success: function(data) {
    //  console.log(data );
      res=data;


    },
    error: function(data) {

      console.log("ko" );
    }


  });

      console.log(res); 
  return res;     





}


});



 return Friendscollection;



 });
如果调用fetch,则返回空集合:

 Friends.utenti = new Friendscollection();
 Friends.utenti.fetch({async:false});

Backbone.Collection.fetch
方法不应该返回数据,而是一个延迟或承诺对象。做你想做的事的正确方法如下:

var Friendscollection = Backbone.Collection.extend({
    model: Person,
    url: "https://api.parse.com/1/classes/_User/",
    idAttribute: "objectId",
    parse: function(data) {

        return data.results;
    },

    fetch: function(options) {
        var cur_user = Parse.User.current().id;
        return Backbone.Collection.prototype.fetch.call(this, {
            type: 'GET',
            headers: {
                'X-Parse-Application-Id': 'qS0KLM--h***PiTS3VMk',
                'X-Parse-REST-API-Key': 'nh3eoUo***Tks9--JIfIt1Gm'
            },
            url: this.url + "?where=..."
        });
    }
});
var friendscollection = new FriendsCollection();
var res;

friendscollection.fetch().done(function(data) {
    res = data;
}).fail(function(xhr, textStatus, error) {
    console.log(textStatus);
});
这样,您可以得到如下ajax结果:

var Friendscollection = Backbone.Collection.extend({
    model: Person,
    url: "https://api.parse.com/1/classes/_User/",
    idAttribute: "objectId",
    parse: function(data) {

        return data.results;
    },

    fetch: function(options) {
        var cur_user = Parse.User.current().id;
        return Backbone.Collection.prototype.fetch.call(this, {
            type: 'GET',
            headers: {
                'X-Parse-Application-Id': 'qS0KLM--h***PiTS3VMk',
                'X-Parse-REST-API-Key': 'nh3eoUo***Tks9--JIfIt1Gm'
            },
            url: this.url + "?where=..."
        });
    }
});
var friendscollection = new FriendsCollection();
var res;

friendscollection.fetch().done(function(data) {
    res = data;
}).fail(function(xhr, textStatus, error) {
    console.log(textStatus);
});

该代码是异步的,因此您不应该期望在同一块中定义
res
。这就是
done()
的回调的作用。要进一步了解延迟对象的工作方式,请查看查看网络日志时站点是否返回预期数据的可能重复项?它是去正确的链接吗?