【问题标题】:AngularJS - $http Failed to load resource: the server responded with a status of 404AngularJS - $http 加载资源失败:服务器响应状态为 404
【发布时间】:2019-03-15 00:41:15
【问题描述】:

我已经使用 Angularjs 创建了单页应用程序。浏览页面时遇到以下问题。

问题一:

$http 下方调用命中 Spring Controller,处理成功,此 spring 方法返回 bean。

@RequestMapping(value="/getStatus",method=RequestMethod.GET)

我从服务器端得到响应后,它会进入 JS 方法中的错误块

加载资源失败:服务器响应状态为 404(未找到)-> /getStatus

为什么处理成功后会出现错误块?

问题2:

即使我使用 state.go 从错误块导航页面,Acknowledgement.jsp 也会被渲染,{{status}} --> 打印为空

我在 AngularJs 和 UI 路由器上苦苦挣扎了 2 天。请帮忙

Progress.jsp

<div ng-controller="myctrl as mydata" ng-init="getStatus()">
    // progress icon here
</div>

MyCtrl.js

$scope.getStatus = function() {

$http({
    url: CONTEXT_PATH + 'getStatus',
    method: "GET",
    headers: {'Content-Type': 'application/x-www-form-urlencoded'}
    }).success(function (data, status, headers, config) {
        console.log("success block : "+status);
        $scope.paymentStatus = data.epaymentStatus;
        $state.go("Acknowledgement");
    }).error(function (data, status, headers, config) {
        console.log("failure block : "+status);
        $scope.paymentStatus = data.epaymentStatus;
        $state.go("Acknowledgement");
    });

};

Acknowledgement.jsp

<script type="text/javascript">
console.log("Status :: "+status);
// Here status printing as SUCCESS
</script>

<div ng-controller="myctrl as mydata" id="RESPONSE">
{{status}} --> printing empty
<div class="row row-space" ng-if="status == 'SUCCESS'">
</div>
</div>

ProcessController.java

@RequestMapping(value="/getStatus",method=RequestMethod.GET)
public ProcessBean getStatus(HttpServletRequest 
httpRequest, HttpServletResponse httpResponse) {
    ProcessBean processBean = new ProcessBean();
    try {
        // Business process takes place here
        processBean.setStatus("SUCCESS");
        httpRequest.setAttribute("processStatus", "S");

    } catch(Exception e) {
        processBean.setStatus("FAILURE");
        httpRequest.setAttribute("processStatus", "S");
        e.printStackTrace();
    }
    return processBean;
}

【问题讨论】:

  • 请在您的 $http 发送请求的服务器端显示您的代码。
  • @holydragon.. 感谢您的回复。我已经更新了我的代码。请检查

标签: javascript java angularjs spring-mvc angular-ui-router


【解决方案1】:

通过在方法中添加@ResponseBody 解决了我的第一个问题。

@RequestMapping(value="/getStatus",method=RequestMethod.GET)
public @ResponseBody ProcessBean getStatus(HttpServletRequest 
httpRequest, HttpServletResponse httpResponse) {
    ProcessBean processBean = new ProcessBean();
    try {
        // Business process takes place here
        processBean.setStatus("SUCCESS");
        httpRequest.setAttribute("processStatus", "S");

    } catch(Exception e) {
        processBean.setStatus("FAILURE");
        httpRequest.setAttribute("processStatus", "S");
        e.printStackTrace();
    }
    return processBean;
}

【讨论】:

    猜你喜欢
    • 2015-04-16
    • 2016-11-01
    • 2018-01-29
    • 2020-07-04
    • 1970-01-01
    • 2019-07-04
    • 2021-11-20
    相关资源
    最近更新 更多