0

私はすでにこれこれを読んで助けを得ましたが、コードに何か問題があります。さて、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>

何が間違っているのですか:コントローラーが返す文字列を取得できません。アラートエラー(オブジェクト[]オブジェクト)が表示され、データがデータベースに挿入され、送信後にページがリロードされますが、エラーは発生しません

誰かがAjaxをSpringで使用する方法のチュートリアルを教えてもらえますか(データベースに挿入)助けてください

4

1 に答える 1

0

jQuery を使用している場合 (使用しているように見えます)、関数にイベントを含め、event.preventDefault()を実行してフォームが送信されないようにする必要があります。そうしないと、イベントが伝播してフォームが送信され、ajax 投稿とフォーム投稿が取得されます。

于 2013-06-04T19:02:52.610 に答える