Angularjs 角度JS-空白错误响应
我正在学习Angular JS,并且面临HTTP Get请求的问题。这是我的密码:Angularjs 角度JS-空白错误响应,angularjs,Angularjs,我正在学习Angular JS,并且面临HTTP Get请求的问题。这是我的密码: function countryController($scope,$http) { delete $http.defaults.headers.common['X-Requested-With']; $http.get("http://localhost:8080/countrybook/api/v1/countrybook") .success(function(response) {
function countryController($scope,$http) {
delete $http.defaults.headers.common['X-Requested-With'];
$http.get("http://localhost:8080/countrybook/api/v1/countrybook")
.success(function(response) {
$scope.countries = response;
})
.error(function(response){
alert(response);
});
}
由于某种原因,我得到一个空白的错误响应(警报中没有任何内容。当我在firebug中调试时,我看到响应是“”)
我的标题如下所示:
响应标题:
Cache-Control private, must-revalidate
Content-Length 355
Content-Type application/javascript
Date Sat, 15 Nov 2014 16:53:52 GMT
Last-Modified Sat, 15 Nov 2014 16:52:06 GMT
Server WebStorm 9.0.1
请求标头:
Accept */*
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Cache-Control max-age=0
Connection keep-alive
Host localhost:63342
If-Modified-Since Sat, 15 Nov 2014 16:52:06 GMT
Referer http://localhost:63342/CountryBook/index.html
User-Agent Mozilla/5.0 (Windows NT 6.3; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0
我在Firebug中看到的反应是:
function countryController($scope,$http) {
delete $http.defaults.headers.common['X-Requested-With'];
$http.get("http://localhost:8080/countrybook/api/v1/countrybook")
.success(function(response) {
$scope.countries = response;
})
.error(function(response){
alert(response);
});
}
你能帮我弄清楚出了什么问题吗?当我直接从浏览器使用http get请求中提到的相同链接时,我看到了预期的响应。谢谢你的帮助 因此,在不了解后端的情况下,我的通用$http模式是:
$http.get(requestEndpointString)
.success(function(data,status,headers,config){
if(status!=200){
/*unexpected response status ...*/
console.log('API error status: '+status);
}else{
/* Success ... */
}
})
.error(function(data, status, headers, config){
/* Handle errors */
});
也许它可以帮助您通过记录响应状态进行调试?
同时,尝试取出线路:
delete $http.defaults.headers.common['X-Requested-With'];
问题是:
The Same Origin Policy disallows reading the remote resource at localhost:8080/countrybook/api/v1/countrybook. This can be fixed by moving the resource to the same domain or enabling CORS.
通过在服务器端响应中添加以下两个标头解决了此问题:
.header("Access-Control-Allow-Origin", "*")
.header("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT")
Smartbart24-查看控制台日志会有所帮助。谢谢你的帮助 你似乎混淆了Firefox的响应?如果响应为“”,则警报是否正确显示?我想你的问题的答案会在后端找到?嗨,SmartBart24。我检查了后端日志。我的后端确实发送了正确的响应。如果我直接在浏览器中使用,同样的链接也可以正常工作。我在firebug中看到的响应与我前面提到的JS代码相同。我得到的警报是空白的。我运行了firebug并在响应中添加了一个手表。回答是空的。不确定哪里出错。尝试添加
$httpProvider.defaults.headers.common['Accept']='application/json,text/javascript'$httpProvider.defaults.headers.common['Content-Type']='application/json;字符集=utf-8'代码>到您的代码无效。尝试了两种解决方案。它直接进入错误块并显示空警报。请让我知道,如果我可以提供更多的信息给你。试过smartbart24说的话。查看控制台,现在我发现:跨源请求被阻止:同源策略不允许读取远程资源。可以通过将资源移动到同一域或启用CORS来解决此问题。通过在服务器端添加以下两个标头来解决此问题:。标头(“访问控制允许来源”、“*”)。标头(“访问控制允许方法”、“获取、发布、删除、放置”)Smartbart24-查看控制台日志帮助。谢谢那真是帮了大忙。我认为error的回调只有一个参数(response),之后可以使用response.status管理它,但它不起作用。这是因为响应实际上是数据,在这种情况下,数据是空的。。。