Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.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 代码未捕获angularjs$http请求中的404错误_Javascript_Json_Angularjs_Rest_Http - Fatal编程技术网

Javascript 代码未捕获angularjs$http请求中的404错误

Javascript 代码未捕获angularjs$http请求中的404错误,javascript,json,angularjs,rest,http,Javascript,Json,Angularjs,Rest,Http,我正试图在一年前编写的angularjs应用程序中添加一些错误处理。对于一些RESTAPI调用,后端返回一个404,我想通过简单地返回一个空列表/数组来静默地修复它。但我无法捕获404错误,我不明白它为什么不起作用 我正在跟踪文档,我希望errorCallback的response是一个具有status属性的对象。相反,它有一个SyntaxError构造函数,其属性名为fileName、lineNumber、columnNumber和message。该消息是一个JSON.parse错误 现在我可

我正试图在一年前编写的angularjs应用程序中添加一些错误处理。对于一些RESTAPI调用,后端返回一个404,我想通过简单地返回一个空列表/数组来静默地修复它。但我无法捕获404错误,我不明白它为什么不起作用

我正在跟踪文档,我希望
errorCallback
response
是一个具有
status
属性的对象。相反,它有一个SyntaxError构造函数,其属性名为fileName、lineNumber、columnNumber和message。该消息是一个JSON.parse错误

现在我可以理解为什么会有JSON解析错误:没有数据!但是响应状态正在丢失,我的代码无法区分404和其他我不想静默修复的错误

我错过了什么?记录在哪里?这些有角度的文档似乎不正确——除非我读错了

$http({
    method: 'GET',
    url: myRestApiUri
})
.then(
    function successCallback( response ) {
        handlers.success(response);
    },
    function errorCallback( response  ) {
        if( response.status === 404 ) {
            handlers.success( [] );
        }
        else {
            handlers.error(response);
        }
    }
)

编辑:收到一些反馈后,我意识到我使用的是angular的旧版本。所以我稍微修改了我的问题:angular的最新(或任何更新的)版本是否正确地实现了http错误捕获?我不想安装新的angular并重新编写API更改代码,结果发现新的angular也有同样的问题。

当您直接在浏览器中调用时,会得到什么响应?比如:“您使用的angular版本是什么,而文档引用的版本是什么?这让我想起了过去,文档默认为最新版本,而我使用的是一个旧版本,其处理方式有所不同。@Charlie H,响应正文是“未找到”“。因此,JSON.parse对此不屑一顾。我的目标是捕获http错误,而不是json解析错误。@ste2425,捕捉得好。我使用的是1.3,它使用不同的签名
函数(数据、状态、标题、配置)
定义回调。但即便如此,核心问题还是一样。我希望看到status参数的值为404。但是,数据参数是一个SyntaxError对象。我想在angular尝试解析服务器的错误文本之前捕获404,就好像它是JSON一样。Dang,我一年前在1.4中遇到了这个问题,但我没有时间调查它,不得不继续新的项目。现在我使用1.5,仍然是同样的问题,尝试解析404响应并给出错误