【问题标题】:Spring with AJAX integrationSpring 与 AJAX 集成
【发布时间】:2012-12-22 21:28:48
【问题描述】:

所以我能够成功地将 AJAX 请求与 Spring MVC 集成。但是,我有一个问题——如果我单击表单的“提交”按钮,我的@Controller 类会检测到 url 并返回一个 ModelAndView。但是,我想要的是先有一个 AJAX 检查,如果表单提交不成功(例如,空白字段),返回一个 AJAX 响应。否则,照常进行并显示 ModelAndView。但是,我不知道如何同时集成两者。

感谢任何想法或教程。

谢谢!

【问题讨论】:

  • 你打算如何处理客户端的ajax响应?如果成功,您将获得 html,否则将获得 json。对我来说,这似乎不是一个干净的解决方案。
  • 如果不成功,从我的方法中返回 json(我知道如何编码)。如果成功,从我的方法返回 ModelAndView 对象(我知道如何编码)。问题是如何处理两者。

标签: ajax spring spring-mvc


【解决方案1】:

您有多种选择:

  • 在使用 AJAX 时将表单提交到特定的不同 URL
  • 使用AJAX发帖时在请求中添加特定参数,并使用该特定参数检查请求是否为n AJAX请求
  • 测试X-Requested-With请求头是否存在并包含XMLHttpRequest

【讨论】:

  • 谢谢!假设我选择第一个选项。如果 ajax url 成功,我将如何重定向到另一个 url?问题是在 ajax 情况下,我可以返回一个 @ResponseBody,但在常规情况下,我必须返回 ModelAndView 对象。
  • 在您的 JavaScript 代码中,不是将表单发布到普通 URL(表单的 action 属性中的那个),而是使用 AJAX 将表单发布到 不同的 i> URL,由返回 ResponseBody 的 another Spring 方法处理。
  • 当我想返回一个ModelAndView时怎么样。基本上,我想使用 Ajax 提交表单,如果有错误,立即显示错误,否则重定向。
  • 如果 AJAX 方法成功,则让您的 JavaScript 成功响应处理程序重定向到适当的位置。
【解决方案2】:

我会走 PJAX 路线或也称为 HiJax 的路线。

基本上,如果它是使用标头的 AJAX 请求,您会返回页面的子集。大多数人不仅仅是在他们的视图/模板中使用条件来决定是否包含完整的或无 chrome 的 HTML。

【讨论】:

    猜你喜欢
    • 2012-08-17
    • 1970-01-01
    • 2018-01-10
    • 2023-03-31
    • 2018-07-02
    • 2016-03-09
    • 2016-11-23
    • 2012-10-20
    • 1970-01-01
    相关资源
    最近更新 更多