gpt4 book ai didi

javascript - backbone.js 应该如何处理没有返回结果的 GET 请求?

转载 作者:行者123 更新时间:2023-11-29 10:21:26 25 4
gpt4 key购买 nike

我有一些文本输入元素,当其值发生变化时,将触发对 listingListView 集合 listingCollection 的提取,然后更新 listingListView 通过函数 listingListView.refreshList 使用新数据,如下所示。我正在使用 PHP/Codeigniter 公开 RESTful API。

问题:如果从 fetch() 检索到结果,一切正常。但是,当过滤器导致没有返回结果时,服务器端和客户端应该如何处理呢?当前 Chrome 的 javascript 控制台显示 404 错误,并且在“网络”选项卡中,XHR 请求以红色突出显示。如果返回的结果为零,我要做的就是清空 listingListView 并显示类似(No results returned) 的消息,并且不在 javascript 中抛出任何错误安慰。谢谢!

PHP 代码

function listings_get() {
// Get filters
$price_min = $this->get('price_min');

$this->load->model('app_model');
$results = $this->app_model->get_listings($price_min);

if($results)
$this->response($results);
else
$this->response(NULL);
}

JS代码

window.ListingListView = Backbone.View.extend({
tagName: 'table',

initialize: function() {
this.model.bind('reset', this.refreshList, this);
this.model.bind('add', function(listing) {
$(this.el).append(new ListingListItemView({ model: listing }).render().el);
}, this);
},

render: function() {
_.each(this.model.models, function(listing) {
$(this.el).append(new ListingListItemView({ model: listing }).render().el);
}, this);
return this;
},

close: function() {
$(this.el).unbind();
$(this.el).empty();
},

refreshList: function() {
$(this.el).empty();
this.render();
}
});

最佳答案

Backbone 在“同步”错误时触发“错误”事件。您可以通过在 View 中创建错误处理函数来捕获 404 错误。

this.model.on('error',this.defaultErrorHandler,this);

defaultErrorHandler: function(model, error) {
console.log('status', error.status);
}

关于javascript - backbone.js 应该如何处理没有返回结果的 GET 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11067912/

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