【问题标题】:How do I call a Spring controller method with Jquery AJAX如何使用 Jquery AJAX 调用 Spring 控制器方法
【发布时间】:2011-06-22 00:41:06
【问题描述】:

我有以下 Spring Controller

@Controller
@RequestMapping("/accreq")

使用以下映射

@RequestMapping(value = "/defRoles", method=RequestMethod.GET)
public @ResponseBody String loadDefaultRoles(
    @RequestParam(value="idGroup", required=false) String groupID
    throws ServletException{

我正在尝试使用以下 jquery ajax 调用此方法

$.ajax({
type: 'GET',
url: '/accreq/defRoles',
data: {idGroup: $('#infoGroup').val() },
success: function() {
    alert("success");
    }
});

请帮助我弄清楚为什么当我单击按钮时调用了 ajax 方法,但没有调用 Spring 方法。我已经用 firebug 逐步完成了脚本,它肯定会命中 ajax 函数。

【问题讨论】:

  • firebug 还应该显示完整的 ajax 请求,确保它访问的是您想要的完整 url。

标签: java jquery ajax spring spring-mvc


【解决方案1】:

首先,尝试看看如果您在浏览器中手动点击 URL 会发生什么

如果成功,请在 firebug 中打开请求跟踪并查看 firefox 是否真的点击了 URL(以及响应内容)

【讨论】:

    【解决方案2】:

    尝试将其添加到您的 jquery 中

    error: function(jqXHR, textStatus, errorThrown) {
        alert("error:" + textStatus + " exception:" + errorThrown);
        }
    }
    

    你会看到是否发生错误

    【讨论】:

      【解决方案3】:

      您在 web.xml 中使用了哪种模式?搜索标签并查看您使用的是哪种模式。

      例如,如果您正在使用:

      <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>*.html</url-pattern>
      </servlet-mapping>
      

      你应该使用这样的东西:

      $.ajax({
      type: 'GET',
      url: '/accreq/defRoles.html',
      data: {idGroup: $('#infoGroup').val() },
      success: function() {
          alert("success");
          }
      });
      

      【讨论】:

        【解决方案4】:

        是否有可能发生服务器端异常,这就是您没有看到响应的原因。如果您有调试,请确保您的异常被抛出和/或您有相同的日志。

        此外,您的评论有点模棱两可,即使调用了 ajax 方法,也没有调用 spring 方法是什么意思。你能澄清一下吗?也有帮助的是带有屏幕截图或seomthing的调用的firebug o / p。如果firebug抛出错误它是什么错误。

        【讨论】:

          猜你喜欢
          • 2016-06-03
          • 1970-01-01
          • 1970-01-01
          • 2014-05-16
          • 1970-01-01
          • 2011-05-26
          • 2011-07-27
          • 1970-01-01
          • 2017-10-24
          相关资源
          最近更新 更多