Ajax 在angularjs中处理406 http响应

Ajax 在angularjs中处理406 http响应,ajax,angularjs,Ajax,Angularjs,我将angular与一个ngResource工厂一起使用,该工厂在Rails后端有一个restful控制器。当发出post请求以创建新记录时,My API以406响应和json响应进行响应,其结构如下: { success: false, errors ['error1', 'error2'], message: "record didn't save" } 问题是,当我从API返回406响应时,我在控制台中看到一个post请求错误,angular无法处理该响应 比如: POST http:/

我将angular与一个ngResource工厂一起使用,该工厂在Rails后端有一个restful控制器。当发出post请求以创建新记录时,My API以406响应和json响应进行响应,其结构如下:

{ success: false, errors ['error1', 'error2'], message: "record didn't save" }
问题是,当我从API返回406响应时,我在控制台中看到一个post请求错误,angular无法处理该响应

比如:

POST http://localhost:3000/api/widget/384/comments 406 (Not Acceptable)    includes.js?v=e777c6e0fdfb9a725e857c8ca3eab18f:545
  sendReplacement includes.js?v=e777c6e0fdfb9a725e857c8ca3eab18f:545
  (anonymous function) angular.js?body=1:8381
  sendReq angular.js?body=1:8181
  $http.serverRequest angular.js?body=1:7922
  wrappedCallback angular.js?body=1:11320
  wrappedCallback angular.js?body=1:11320
  (anonymous function) angular.js?body=1:11406
  Scope.$eval angular.js?body=1:12413
  Scope.$digest angular.js?body=1:12225
  Scope.$apply angular.js?body=1:12517
  (anonymous function) angular.js?body=1:18627
  jQuery.event.dispatch jquery.js?body=1:5117
  elemData.handle
我的角度代码的结构如下:

Object.save( { object_id: 1 } ).$promise.then(function (response) {
  if (response.success) {
    //success
  } else {
    // something else
  }

如何指示angular处理此类HTTP响应?

您应该检查服务器代码。一般来说,406意味着某些标题/内容类型不被客户端接受

接受:客户端接受的MIME类型。例如,浏览器可能只接受它知道如何处理的返回类型的数据(HTML文件、GIF文件等)。 Accept Charset:客户端接受的字符集。 接受编码:客户接受的数据编码,例如,其理解的文件格式。 接受语言:客户接受的自然语言(英语、德语等)。 接受范围:客户端是否从资源(即资源的一部分)接受字节范围

因此,请检查服务器正在输出哪些标头

您还可以检查“响应”对象上有哪些其他属性可用