使用Firefox v50及更高版本时,Angularjs $ http.get不会触发。
从下面的Angularjs函数中,始终返回“结果为2”,并且sysout根本不打印,这意味着不会每次都调用Spring控制器方法。在浏览器控制台以及服务器端都没有错误。有什么解决办法吗?
当我点击网址www.xxxx.com/api/checkSession时,它在浏览器中显示2,但没有触发CheckSession Spring方法。
我已经通过使用POST解决了问题。请在下面检查我的答案。
CheckSession.js
this.checkSession = function(){
var deferred = $q.defer();
$http.get('/api/checkSession').then(function(response) {
result = parseInt(response.data);
if(result==2){
jAlert("Your Session is Expired!",null,function(){
});
} else{
deferred.resolve();
}
});
return deferred.promise;
};
SessionController.java
@RequestMapping(value = "/checkSession", method = RequestMethod.GET)
public @ResponseBody int checkSession(HttpServletRequest httpRequest) {
int status = 0;
if (httpRequest.getSession().getAttribute("email") != null) {
status = 1;
} else {
System.out.println("Email"+httpRequest.getSession().getAttribute("email"));
status = 2;
if (httpRequest.getSession() != null)
httpRequest.getSession().invalidate();
}
return status;
}
答案 0 :(得分:0)
最后,我在AngularJS和Spring控制器方法中都使用 POST方法而不是GET方法解决了该问题。现在,每次都会调用Spring方法。
但是我不知道为什么$ http.get方法不调用Spring控制器方法,并且在AngularJS的方法中总是得到2的结果。如果有人知道,请回答。谢谢。