2017-03-18 3 views
1

保存ボタンを押すと、ajaxが機能しません。ページが再読み込みされます。私のindxページとコントローラの機能です。 URLは--- http://localhost:8082/spring-test/indexここデータを保存しようとしているときにAjaxが機能しない

コントローラ

@RequestMapping(value = "/saveUser", method = RequestMethod.POST) 
    public String saveUser(@Valid @ModelAttribute("User") User user, BindingResult bindingResult, 
      ModelMap model, HttpServletRequest request, RedirectAttributes redirectAttrs) { 
     System.out.println("user: " + user.getUserId()); 
     String type = request.getParameter("update") != null ? request.getParameter("update") : ""; 
     String delete = request.getParameter("delete") != null ? request.getParameter("delete") : ""; 
     if (type.equalsIgnoreCase("update") || delete.equalsIgnoreCase("delete")) { 
      User userDb = userService.getUserById(user.getUserId()); 
      user.setUserId(userDb.getUserId()); 
     } 

     if (bindingResult.hasErrors()) { 
      System.out.println("=====================error======================" + bindingResult.getFieldErrors()); 
      return "index"; 
     } 

     if (delete.equalsIgnoreCase("delete")) { 
      userService.deleteUser(user.getUserId()); 
     } else { 
      userService.saveUser(user); 


     } 
     //model.clear(); 
     model.clear(); 
     return "redirect:/index"; 
    } 

index.htmlを

<html xmlns:th="http://www.thymeleaf.org" xmlns:tiles="http://www.thymeleaf.org" class="no-js"> 

<head> 
    <title></title> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" /> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
    <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
    <link rel="stylesheet" href="https://cdn.datatables.net/1.10.13/css/jquery.dataTables.min.css" /> 
    <script src="https://cdn.datatables.net/1.10.13/js/jquery.dataTables.min.js"></script> 
    <script> 
     $(document).ready(function() { 
        $('#myTable').DataTable(); 
        $('#btnSave').click(function(e) { 
          var dataUser = $("#name").val(); 
          var dataPass = $("#pwd").val(); 
          var userDdata = { 
           "name": dateUser, 
           "pass": dataPass 
          } 

          $.ajax({ 
           type: "POST", 
           url: "/spring-test/saveUser", 
           data: userData, 
           success: function(response) { 
            alert(1) 
           }, 
           error: function(e) { 
            alert('Error: ' + e); 
           } 
          }); 

         } 
        }); 
    </script> 

</head> 

<body> 
    <div class="container col-sm-12 col-md-12" style="height:20px;background:#85a3e0;"> 
    </div> 
    <div class="container col-sm-12 col-md-12"> 
     <h3 class="text-center">Super Admin</h3> 

     <div class="col-md-4 col-sm-4" style="margin-left: 6%;"> 

      <form class="form-horizontal" role="form" th:action="@{/saveUser}" th:object="${user}" method="post"> 
       <div class="form-group"> 
        <label class="control-label col-sm-3" for="pwd">Username:</label> 
        <div class="col-sm-9"> 
         <input type="text" class="form-control" id="name" placeholder="Enter Name" th:field="*{userName}" /> 
         <input type="hidden" th:field="*{userId}" /> 
        </div> 
       </div> 
       <div class="form-group"> 
        <label class="control-label col-sm-3" for="pwd">Password:</label> 
        <div class="col-sm-9"> 
         <input type="text" class="form-control" id="pwd" placeholder="Enter password" th:field="*{password}" /> 
        </div> 
       </div> 

       <div class="form-group"> 
        <div class=" col-sm-12 text-right"> 
         <button type="submit" class="btn btn-default" name="cancel" value="cancel">Cancel</button> 
         <button id="btnSave" type="submit" class="btn btn-primary" name="save" value="save">Save</button> 
         <button type="submit" class="btn btn-primary" name="update" value="update">Update</button> 
         <button type="submit" class="btn btn-primary" name="delete" value="delete">Delete</button> 
        </div> 
       </div> 
      </form> 
     </div> 
    </div> 


</body> 

</html> 

いただきました問題です。 ajax関数を追加した後、私のdataTableも表示されません。

答えて

0

送信ボタンがあり、フォームを直接送信しているため、機能しません。

あなたができることは、単にtype="submit"をボタンから削除してからお試しください。

すでに(目:アクション= "@ {/ saveUser}")作用を有するので、あるVinod

+0

私はこの ようにそれを変更し、<ボタンID = "btnSave" クラス= "BTN-主要BTN" 名前=値= "保存" "保存"> を保存します。しかし、まだページがリロードされ@VinodクマールKashyap –

+0

あなたのクリック機能はこれまでに呼ばれていますか? Clickイベントをボタンにバインドする必要があります。 http://api.jquery.com/bind/を参照してください。 –

0

ちょうど

<html xmlns:th="http://www.thymeleaf.org" xmlns:tiles="http://www.thymeleaf.org" class="no-js"> 

    <head> 
     <title></title> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
     <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" /> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
     <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
     <link rel="stylesheet" href="https://cdn.datatables.net/1.10.13/css/jquery.dataTables.min.css" /> 
     <script src="https://cdn.datatables.net/1.10.13/js/jquery.dataTables.min.js"></script> 
     <script> 
      $(document).ready(function() { 
         $('#myTable').DataTable(); 
         $('#btnSave').click(function(e) { 
           var userData = $("#form1").serializeArray();  
           $.ajax({ 
            type: "POST", 
            url: "/spring-test/saveUser", 
            data: userData, 
            success: function(response) { 
             alert(1) 
            }, 
            error: function(e) { 
             alert('Error: ' + e); 
            } 
           }); 

          } 
         }); 
     </script> 

    </head> 

    <body> 
     <div class="container col-sm-12 col-md-12" style="height:20px;background:#85a3e0;"> 
     </div> 
     <div class="container col-sm-12 col-md-12"> 
      <h3 class="text-center">Super Admin</h3> 

      <div class="col-md-4 col-sm-4" style="margin-left: 6%;"> 

       <form class="form-horizontal" role="form" id="form1" th:action="@{/saveUser}" th:object="${user}" method="post"> 
        <div class="form-group"> 
         <label class="control-label col-sm-3" for="pwd">Username:</label> 
         <div class="col-sm-9"> 
          <input type="text" class="form-control" id="name" placeholder="Enter Name" th:field="*{userName}" /> 
          <input type="hidden" th:field="*{userId}" /> 
         </div> 
        </div> 
        <div class="form-group"> 
         <label class="control-label col-sm-3" for="pwd">Password:</label> 
         <div class="col-sm-9"> 
          <input type="text" class="form-control" id="pwd" placeholder="Enter password" th:field="*{password}" /> 
         </div> 
        </div> 


       </form> 
<div class="form-group"> 
         <div class=" col-sm-12 text-right"> 
          <button type="submit" class="btn btn-default" name="cancel" value="cancel">Cancel</button> 
          <button id="btnSave" type="button" class="btn btn-primary" name="save" value="save">Save</button> 
          <button type="submit" class="btn btn-primary" name="update" value="update">Update</button> 
          <button type="submit" class="btn btn-primary" name="delete" value="delete">Delete</button> 
         </div> 
        </div> 
      </div> 
     </div> 


    </body> 

    </html> 
0

以下しようとフォーム送信のために、それが直接データを送信しますAJAX経由ではありません。これを機能させるには、以下のようにこのデフォルトの動作を防ぐ必要があります。

$('#btnSave').click(function(e) { 
    e.preventDefault() 
    //Then do your stuff 
}); 
関連する問題