Angular JS - HTTP GET请求抛出错误

时间:2015-08-24 18:19:50

标签: json angularjs http ionic-framework

我是Angular JS和Ionic应用程序的新手。我试图从json获取url数据。但是,遗憾的是我无法得到任何回应。相反,我收到错误,如下面的屏幕所示

我试过两种方式,

尝试1:

 function(){
            return $http.get("url?subjStudyId=441",{'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}).then(function(response){

                chats = response.data;
                alert(JSON.stringify(chats));
                return chats;

            },function(err) {
             alert(JSON.stringify(err));
  })
        }

尝试2:

function($http) {
 var chats = [];
  return {
        all: function(){
            return $http.get("url?subjStudyId=441").then(function(response){

                chats = response.data;
                alert(JSON.stringify(chats));
                return chats;

            },function(err) {
             alert(JSON.stringify(err));
  })
        }
    } 

请帮我找到解决方案。

2 个答案:

答案 0 :(得分:1)

您的问题可能是CORS代表Cross-Origin Resource Sharing,请查看此深入CORS文章here

在后端启用CORS并尝试再次执行请求。您也可以在后端启用JSONP,然后执行

$http.jsonp('url?callback=JSON_CALLBACK&param=value);

  

JSONP代表" JSON with Padding" (和JSON代表JavaScript   Object Notation),是一种从另一个域获取数据的方法   绕过CORS(跨源资源共享)规则。 CORS是一套   "规则,"关于在具有不同的站点之间传输数据   来自客户的域名。

我编写了两个示例,一个使用$http.get,另一个使用$http.jsonp,这两个示例都没有告诉我您的服务器中没有Access-Control-Allow-Origin "*",也没有JSONP支持设置。前往enable-cors.org,他们收到了很好的文章,可以帮助你在后端获得CORS设置。

从技术上讲,你应该坚持CORS,因为JSONP更多是security concern。因此,如果没有什么能阻止你只是启用CORS那么坚持下去。

通过使用promises执行标准$http.get$http.jsonp请求的示例。



var app = angular.module("MyApp", []);

app.controller("MyCtrl", function($scope, $http){

  $scope.data = "";

  $scope.normalCall = function(){

  var results = $http.get('http://202.133.56.91:8081/SD_BIO/app/retrievenotifications.action?subjStudyId=441')
  .then(function(response){
      $scope.data = response;
  }, function(error){
      $scope.data = error; 
  });
  
  return results;
  };
  

 $scope.jsonPCall = function(){
        
 var results =$http.jsonp("http://202.133.56.91:8081/SD_BIO/app/retrievenotifications.action?callback=JSON_CALLBACK")
    
  .then(function(response){
      $scope.data = response;
  }, function(error){
      $scope.data = error;  
  });
  
  return results;
  };

});

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="MyApp">
  <div ng-controller="MyCtrl">
    <button ng-click="normalCall()">Original Call</button> | 
      <button ng-click="jsonPCall()">JSONP Call</button>
     <br><br>
     <div ng-model="data">{{data}}</div>
  </div>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:-1)

您需要指定要进行GET的网址

url?subjStudyId=441

不是网址,它需要像 - &gt; someurl.com/?subjStudyId=441其中 - &gt; ?是查询开始和 - &gt; =是您的值