【问题标题】:Submitting Json to Spring MVC Controller returning jsp as ajax response string将 Json 提交给 Spring MVC 控制器,将 jsp 作为 ajax 响应字符串返回
【发布时间】:2018-06-16 01:30:33
【问题描述】:

我正在创建 Spring mvc 应用程序。我通过 AJAX 向控制器提交 JSON 字符串。我想要的是将页面重定向到不同的 JSP 页面。

现在我从控制器返回视图,但不是重定向它,而是返回对先前 AJAX 请求的响应。

弹簧控制器

@RequestMapping("/hello")
public String hello() {
    return "powerseries";
}

Javascript/Ajax

$(document).ready(function(){   
        $('#getData').click(function(){
            var aa=JSON.stringify(answer);
            $.ajax({
    type: "POST",
    url: "hello",
    contentType: "application/json",
    dataType:'json',
    data:aa,
    cache: false,
    processData:false,
    success: function(status){
        console.log("Entered",status);
    },
    error:function(error){
        console.log("error",error);
    }
});
        });  
});  
console.dir(answer);

浏览器控制台

【问题讨论】:

  • 而不是从控制器返回路径返回html并使用window.location.href从ajax重定向

标签: javascript jquery ajax spring spring-mvc


【解决方案1】:

如果要重定向到其他jsp页面,请在控制器方法中使用redirect

@RequestMapping("/hello")
 public String hello() {
   // return "powerseries";
   return "redirect:powerseries";
}

// Add method to controller .
@RequestMapping("/powerseries")
 public String returnPowerseries() {
  return "powerseries";
}

如果您想完全更改文档 html,请使用 $("html").html(response);

【讨论】:

  • 谢谢@manikantgautam。我尝试使用相同的。但没有成功。
【解决方案2】:

当您使用 AJAX 时,您的 MVC 应该返回一个特殊的 JSON 响应。

例如:

@RequestMapping("/hello")
@ResponseBody
public Map hello() {
    m.put('my_redirect', 'the new url');
    return m;
}

然后在您的 AJAX 处理程序中处理此响应。使用 javascript 的 window.location.href = resp.my_redirect; 转到新的 url。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-27
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多