gpt4 book ai didi

javascript - 如何从 fetch 返回 ajax 结果

转载 作者:行者123 更新时间:2023-12-02 18:26:49 25 4
gpt4 key购买 nike

我已经修改了我的集合并覆盖了获取方法,但获取没有返回任何内容。

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 方法不应返回数据,而是返回延迟或 promise 对象。做你想做的事情的正确方法是这样的:

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=..."
});
}
});

这样你就可以得到这样的ajax结果:

var friendscollection = new FriendsCollection();
var res;

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

该代码是异步的,因此您不应期望在同一 block 中定义 res。这就是 done() 回调的用途。要了解有关延迟对象如何工作的更多信息,请查看 Deferred object

关于javascript - 如何从 fetch 返回 ajax 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18292103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com