【问题标题】:insert values to database via Ajax - Spring MVC通过 Ajax 向数据库插入值 - Spring MVC
【发布时间】:2013-05-31 05:24:18
【问题描述】:

我已经阅读了thisthis 以获得一些帮助,但是我的代码有问题。好吧,我想通过 Ajax 将表单插入数据库,这就是我所做的:

Ajax 函数:

<script type="text/javascript">
        function doAjaxPost() {

        var form = $('#ajf');
        frm.submit(function () {
        $.ajax({
        type: "POST",
        url: "${pageContext.request.contextPath}/ajouter_user",
        data:  form.serialize(),
        success: function(response){
        // we have the response
        $('#info').html(response);

        },
        error: function(e){
        alert('Error: ' + e);
        }
        });
        });
        }
        </script>

'#info' 是我要显示控制器返回的成功消息的 DIV 的 ID。

这是我的控制器:

@RequestMapping(value="/ajouter_user",method=RequestMethod.POST)
    public @ResponseBody String addUser(@ModelAttribute User us,BindingResult result,ModelMap model){
        String returnText;
        if(!result.hasErrors()){
            model.addAttribute("us", new User());
            userservice.AddUser(us);

            model.addAttribute("usersystem", userservice.getAllUsers());
           return returnText = "User has been added to the list." ;
        }else{
           return returnText = "Sorry, an error has occur. User has not been added to list.";
        }

    } 

HTML:

<form:form id="ajf" method="POST" commandName="user">
         Here are my fields ...
        <input  type="submit" value="Créer" onclick="doAjaxPost()"/>

</form:form>

问题是:我没有得到控制器返回的字符串,我得到一个警告错误(object [] object),数据被插入到数据库中,提交后页面重新加载而没有给出任何错误

谁能给我一个关于如何在 spring 中使用 Ajax 的教程(插入数据库) 请帮帮我

【问题讨论】:

  • 能否从控制器端检查是否正确获取了请求的 ModelAttribute ?
  • 问题不在modelAttribute中,因为它在集成ajax之前工作。
  • 那么 Ajax 工作(即你正在插入,控制器工作)但 Ajax 返回错误?

标签: ajax spring-mvc controller


【解决方案1】:

如果您正在使用 jQuery(看起来像),那么您需要在函数中包含事件并执行event.preventDefault() 以防止表单提交。否则事件将向上传播,表单将提交,您将获得 ajax 帖子和表单帖子。

【讨论】:

  • 它还在做双重提交的事情吗?
  • 对不起,我编辑了我的问题。值被插入数据库,但我总是有警报错误,我没有收到控制器返回的消息@CodeChimp
  • 从您的问题描述中,听起来您之前收到了两个帖子:“提交后页面重新加载而没有给出任何错误”。你能确认它是否已经消失了吗?如果您将 Chrome 或 Firefox 与 Firebug 一起使用,并查看正在发送的内容,您会看到一两个帖子吗?你能在你的代码中放一个断点,运行它,看看它走哪条路吗?也许您遇到了异常?
  • 好吧,看起来你发生了一些事情。首先,您会收到一个 JavaScript 错误。此外,您会看到 Hibernate 的一些可能问题。我会把你的精力集中在首先修复一个或另一个,以排除任何你能做的事情。另外,我建议在您执行插入操作之前在您的控制器和服务类中放置一个断点或打印输出,以尝试确保您 a) 只获得一次调用,并且 b) 检索正​​确的数据。
  • 我还将在整个 Controller 方法周围放置一个 try/catch,并使用异常堆栈的通用打印输出尝试尝试并排除后端发生的某些事情以某种方式被日志记录抑制/抑制。
猜你喜欢
  • 2014-01-13
  • 1970-01-01
  • 1970-01-01
  • 2013-05-17
  • 2017-08-12
  • 1970-01-01
  • 2020-02-21
  • 2013-09-06
  • 2019-09-25
相关资源
最近更新 更多