angular.js - $http 回调函数与返回码问题

查看:279
本文介绍了angular.js - $http 回调函数与返回码问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

有一个rest服务,我的代码大致是这样

$http.jsonp(url)

.then(function(data){
    console.log(data)
},function(res){
    console.log(res)
})

当数据库没有数据时,控制台 network的信息显示 status是200

response返回数据

console.log(res)打印的信息

为什么network那里显示的status是200,打印出来就成了404了,不返回response的数据。现在我需要当数据库没有数据时拿到returncode=-1 做判断,应该怎么拿到这个response?

解决方案

URL地址需要添加?callback=JSON_CALLBACK,看你Response的结果是:({"returnCode": "-1"})。正常Response的结果是:/**/angular.callbacks._0({"found":12,"posts": []});
以下是一个在线的示例:angularjs-http-jsonp-service-example,你把callback查询参数去掉,在看一下结果哈。


为什么开发者工具显示的status是200,它只是表示HTTP请求成功。为什么返回404,

if (event) {
  // JS成功加载但回调未被调用
  if (event.type === 'load' && 
    !callbacks.wasCalled(callbackPath)) {
          event = { type: 'error' };
        }
        text = event.type;
        status = event.type === 'error' ? 404 : 200;
  }
}

详细信息请参考AngularJS httpBackend源码

jsonpReq only ever sets status to 200 (OK), 404 (ERROR) or -1 (WAITING) - httpBackend.js#65

这篇关于angular.js - $http 回调函数与返回码问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆