2017-05-12 71 views
0

我想用AJAX請求將表單中的數據添加到數據庫中。調用上發生變化的頁面控制器接受「事件」參數ajax請求時沒有找到參數

@RequestMapping(value = "/event") 
public ModelAndView event(HttpServletRequest request, HttpSession session) 
{ 
    ModelAndView modelAndView = new ModelAndView(); 
    SimpleUser simpleUser = simpleUserService.findById((Integer) session.getAttribute("userId")); 
    Profile profile = simpleUser.getProfile(); 
    modelAndView.addObject("nameOfEventOwner", profile.getName()); 
    modelAndView.addObject("surnameOfEventOwner", profile.getSecondName()); 

    int id = Integer.parseInt(request.getParameter("event")); 
    System.out.println(id); 

    modelAndView.addObject("event", eventService.findById(id)); 
    modelAndView.setViewName("eventpage"); 
    return modelAndView; 
} 

在頁面上有一個表單,數據從中我想進入DB(後動態頁面上)

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<%-- 
Created by IntelliJ IDEA. 
User: Yura 
Date: 10.05.2017 
Time: 15:30 
To change this template use File | Settings | File Templates. 
--%> 
<%@ page contentType="text/html;charset=UTF-8" language="java" %> 
<html> 
<head> 
    <script src="<c:url value="/resources/jquery-3.2.1.min.js" />"></script> 
    <script> 
    function call() { 
     var comment = $("#comment").val(); 
     var rate = $("#rate").val(); 

     $.ajax({ 
      url : "/addcomment", 
      method : 'GET', 
      data : { 
       comment : comment, 
       rate : rate, 
       idEvent: ${event.getId()}, 
       idAuthor: ${sessionScope.simpleUser.getId()} 
      }, 
      dataType: "html", 
      success : function(results){ 
       alert("add"); 
      } 
     }); 
    }; 
</script> 
<title>Title</title> 
</head> 
<body> 
    owner: ${nameOfEventOwner} ${surnameOfEventOwner} 
    <br>${event.getNameOfEvent()} <pre> ${event.getDateOfEvent()}}</pre> 
    <br> ${event.getDescription()} 
    <br> ${event.getTag()} 
    <br> 
    <form> 
     Commentary: <input type="text" id="comment" placeholder="text"> 
     Rating: <input type="text" id="rate" placeholder="rating"> 
     <button type="submit" id="button" onclick="call()">Add commentary</button> 
    </form> 
</body> 
</html> 

我想通過AJAX將這些值傳遞給控制器​​。但是當我傳遞這些值時,我的頁面被重新加載,並且我被NumberFormatExseption錯誤破壞,因爲'event'參數沒有被初始化。我怎麼解決這個問題?

回答

0

將按鈕的類型更改爲「按鈕」。

當類型爲「提交」時,該操作將嘗試提交表單重新加載頁面。

使用「按鈕」類型,您只需將操作委派給call()函數。

<button type="button" id="button" onclick="call()">Add commentary</button> 
+0

謝謝,這樣的細微差別解決了這個問題;) –