首页 > 解决方案 > 无法使用 ajax 提交表单时收到警报

问题描述

我有一个用户请求休息日的表格,在我的服务器端,我有功能来检查是否有超过 3 个人要求同一天休息,如果他们有,则不会让用户在当天请求。当他们当天无法请求时,我想显示一个弹出窗口/警报

这是我在控制器中的方法

if(results.size() >3)
{
   System.out.println("Too many people asked for that day off");
   return new ModelAndView("request");

}
else
{
    Request request = new Request();
    request.setDate(newDate);
    request.setNumDays(numDays);
    request.setReason(reason1);

    ModelAndView mv = new ModelAndView("successRequest");
    mv.addObject("request", request);

    requestService.save(request);
        return mv;
}

当那天有超过 3 个请求时,它会返回一个空表单,但我也希望它有一条警报消息,我尝试使用 ajax 在我的 jsp 页面上执行此操作

$('#form').submit(function(e)
{   
     $.ajax({
     type:'POST',
     url:"/request",
     data:$(this).serialize(),
     error: function(){
      window.alert("Too many people have asked for that day off");
      console.log("Error");
     }
});     
});

标签: javascriptjavajqueryajaxspring-mvc

解决方案


AJAX 期望JSON响应而不是ModelAndView对象。

所以首先要做的是使用@ResponseBody而不是ModelAndViewObject 返回 JSON 响应。

然后根据标志值,您可以向用户显示警报。


推荐阅读