Angularjs 角度JS-空白错误响应

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) {

我正在学习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) {
        $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管理它,但它不起作用。这是因为响应实际上是数据,在这种情况下,数据是空的。。。