【发布时间】:2017-07-25 04:19:18
【问题描述】:
我正在开发 angularjs 应用程序。我的主页上有一个按钮,当用户单击该按钮时,它必须点击控制器并从后端获取数据并显示在浏览器上。在 chrome 和 firefox 中一切正常,但在 IE 中无法正常工作。努力寻找替代解决方案来解决,但没有运气,任何建议都会有所帮助。
html: 登录
spring controller:
@RequestMapping(value = "/getData", method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody
List<String> getMyData(HttpServletRequest request) throws Exception {
System.out.println("In MyDataController"); //printed only when navigated through chrome
//logic here
//return statement
}
PS:当在 IE11 中执行相同的上述代码时,它没有碰到 spring 控制器,但在 chrome 和 safari 上工作正常。有什么替代方法可以实现与 angularjs 中的按钮相同的功能,并且在 IE 和 chrome 中都可以使用。
--已编辑-- js 控制器:
myApp.controller('myController', function ($scope, MyService) {
$scope.btnAdminDetails= function () {
alert("In btnAdminDetails, js controller"); //this is called both in IE11 and chrome
console.log("In controller");
MyService.retrieveData().then(
function (response) {
alert("response back from spring controller");
if(window.navigator.msSaveOrOpenBlob){
$scope.IEBrowser = true;
$scope.myData = response;
} else {
$scope.IEBrowser = false;
$scope.myData = response;
}
},
function (errResponse) {
$rootScope.showError("Internal error" + errResponse);
});
}
$scope.btnAdminDetails();
});
//service code
_myService.retrieveData= function(){
alert("service call");//called when tested from both IE and chrome, but issue is from IE the java controller is not getting called from here..
console.log("In Angular Service above $q.defer ");
var deferred = $q.defer();
console.log("In Angular Service below $q.defer");
var randomh=Math.random();
var repUrl = myAppURL+'/myControllerr/getData.form?x='+randomh+"";
$http.get(repUrl).then(
function (response) {
deferred.resolve(response.data);
},
function(errResponse){
deferred.reject(errResponse);
}
);
return deferred.promise;
}
I have added Math.random to the request URL in the service call.
在 IE11 中,当我点击按钮时,只显示控制器中的警报btnAdminDetail, js controller,其他警报语句或 console.log 语句不会打印。
【问题讨论】:
-
你能告诉我点击按钮,btnAdminDetails 函数正在运行吗?还是不行?
-
是的,它正在运行并调用角度控制器,问题是它没有击中弹簧控制器。
-
请向我们展示您的 MyService 代码。
-
请使用IE开发者工具检查控制台是否有错误记录。
-
@WasifKhan - 请看我上面的帖子,我添加了更多细节和服务电话。 IE 控制台中没有显示错误。但我注意到的一件事是,当在 IE 中打开开发人员工具时,行为是正确的,并且它也在命中 spring 控制器。
标签: javascript java angularjs spring internet-explorer-11