主干.js如何处理不返回结果的 GET 请求
How should backbone.js handle a GET request that returns no results?
我有许多文本输入元素,当其值更改时,将触发listingListView
的集合listingCollection
的获取,然后通过函数listingListView.refreshList
使用新数据更新listingListView
,如下所示。我正在使用 PHP/Codeigniter 来公开一个 RESTful API。
问题:如果从fetch()
检索到结果,一切正常。但是,当筛选器导致不返回任何结果时,服务器端和客户端应该如何处理它?目前,Chrome 的 JavaScript 控制台显示404
错误,在"网络"选项卡中,XHR 请求以红色突出显示。在返回零结果的情况下,我想做的只是清空listingListView
并显示类似(未返回结果)的消息,并且不要在 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();
}
});
主干在"同步"错误时触发"错误"事件。可以通过在视图中创建错误处理程序函数来捕获 404 错误。
this.model.on('error',this.defaultErrorHandler,this);
defaultErrorHandler: function(model, error) {
console.log('status', error.status);
}
您可以在主干网中重载错误事件;尽管最好从服务器更改 REST 响应。 没有结果,使用空 JSON 对象发回 200 ok。 请务必测试来自服务器的空对象。
没错,只需将响应设置为空,并将状态设置为 200:
$this->response(NULL, 200);
相关文章:
- JSONP请求返回结果,但也触发error_callback
- async问题,JS Promise无法返回结果,但可以使用console.log
- Meteor js-控制台显示'未定义'即使返回结果
- 正在等待HTTP调用从函数返回结果
- 使用函数for循环遍历对象以更改值,然后返回结果
- 迭代 JSON 文件并且未在 Javascript 中正确返回结果
- Javascript 函数不返回结果
- 用逗号分隔返回结果中的对象
- 需要呈现MongoDB查询返回结果的特定索引/位置
- HTML5 文件阅读器如何返回结果
- javascript循环遍历列表项,并在数组中返回结果
- 使用jquery UI next按钮提交输入字段值,php将返回结果
- 在angularjs工厂中,如何在函数解析后返回结果
- 我在jQuery中的Rock Paper Scissors程序只在平局时返回结果
- 如何使用ajax调用php并返回结果
- 添加第二维度的Javascript未返回结果
- Node.js没有返回结果
- jquery裁剪图像selction未返回结果
- 如何在phonegap javascript函数中返回结果
- 如果文本筛选器在ng重复中未返回结果,则显示消息