我是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));
})
}
}
请帮我找到解决方案。
答案 0 :(得分:1)
您的问题可能是CORS
代表Cross-Origin Resource Sharing
,请查看此深入CORS
文章here。
在后端启用CORS
并尝试再次执行请求。您也可以在后端启用JSONP
,然后执行
$http.jsonp('url?callback=JSON_CALLBACK¶m=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;
答案 1 :(得分:-1)
您需要指定要进行GET的网址
url?subjStudyId=441
不是网址,它需要像 - &gt; someurl.com/?subjStudyId=441其中 - &gt; ?是查询开始和 - &gt; =是您的值