$ http - null纯文本响应

时间:2015-01-09 21:39:56

标签: angularjs angularjs-http

我在AngularJS中有一个$ http POST调用,如果请求不好,它将不会显示服务器响应。

myFactory.create = function(formData) {
  deferred = $q.defer()
  $http({method: 'POST', url: url, responseType: 'json', data: formData})
    .then(function(data) {
      deferred.resolve(data);
    }, function(response, status, headers, config) {
      deferred.reject(response);
  });

  return deferred.promise;
};

当我提交不正确的数据时,API会回复400 - 错误请求。如果我查看Chrome开发者工具中的回复,则会显示纯文本消息:“垂直不正确”。但是,该消息不在$ http错误回调的响应中。

我可以获取其他所有内容(状态,标头和配置),但我的响应数据为空。

正确处理成功的POST,因此我知道该功能通常有效。

知道为什么我能够在Chrome中看到响应但无法通过$ http访问它吗?

1 个答案:

答案 0 :(得分:0)

你可以重构:

myFactory.create = function(formData) {
  var url = 'api/create';  
  return $http({
    method: 'POST', 
    url: url, 
    responseType: 'json',  //Are you sure that it is returning a json??
    data: formData
  });
};

然后在任何你想要的地方检查承诺的回报,

myFactory.create().then(
  function(data){
     console.dir(data);
  },function(response, status, headers, config) {
     console.dir(response);
  });

这应该有效,您应该在日志中看到数据。