Angular http.get调用失败,没有错误代码

时间:2016-05-02 16:43:28

标签: angularjs json http ionic-framework

在Ionic框架中,在控制器内部,我有以下非常简单的Angular http get调用:

$http({
  method: 'GET',
  timeout: '9999',
  responseType: 'json',
  url: 'see below'
}).then(function successCallback(response) {
      console.log('WORKS');
      alert(response.status);//200 OK
  }, function errorCallback(response) {
      console.log('ERROR');
      alert(response.status);// always empty, why?
  });

  // works:
  // http://maps.googleapis.com/maps/api/geocode/json?address=77379&sensor=true
  // http://www.omdbapi.com/?t=lord

  // fail:
  // http://md5.jsontest.com/?text=1234

当你在底部调用url时,其中两个工作,其中两个失败。

为什么会这样?我试过了:

  • 标头编码问题
  • 标题mime类型(application / json等)
  • 检查格式错误的json / whitespaces
  • 超时(设置为9999ms)
  • access-control-allow-origin:*

我还能尝试什么?谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

我看不出你的问题是什么。看看我的Plunker:http://plnkr.co/edit/X3TuhyBgs3AOF6ekvwbi?p=preview

尝试格式化GET请求,如下所示:

$scope.getFromUrl = function(url) {
    $http.get(url).then(function(response){
        $scope.response = response.data;
    },function(){
        alert("no");
    });
}

答案 1 :(得分:0)

原来这是一个CORS问题,但Firefox本机调试器和Firebug并没有告诉你任何提示。如果您有PHP服务器端脚本,请尝试使用以下对我有用的标题:

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
header('content-type:application/json; charset=utf-8');
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");

您还可以使用http://test-cors.org/来测试服务器端代码。