2015-01-02 1 views
2

아약스 코드에 문제가 있습니다.아약스 게시물이 비어 있습니다 (데이터베이스의 빈 문자열)

$(document).ready(function() { 
    var activeTD; 
    $(".td_test").click(function() { 
     $("#bModal").modal('show'); 
     activeTD = this; 
     return false; 

    }); 
    $("#ajaxtest").submit(function(ev) { 
     ev.preventDefault(); 
     $.ajax({ 
      type:"POST", 
      url:"InsertServlet", 
      dataType: "text", 

     }) 
     .done(function(data){ 
      alert(data); 
      $(activeTD).text(data); 
     }); 
    }); 
}); 

alert(data)data 빈 문자열 또는 당신이 좀 도와 available.Can되지 중 하나입니다 것을 의미하는 대화하지만 빈을 엽니 다? 도움이된다면

이 내 서블릿 코드입니다 :

public class InsertServlet extends HttpServlet { 

private static final long serialVersionUID = 1L; 

protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { 
    processRequest(request,response); 
} 

protected void doGeT(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { 
    processRequest(request,response); 
} 

protected void processRequest(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { 
    response.setContentType("text/plain"); 
    String name=""; 
    if(request.getParameter("submitdata") != null) { 


     if(request.getParameter("getdata") != null) { 
      name += request.getParameter("getdata"); 

     } 
    } 
    PrintWriter out = response.getWriter(); 
    out.println(name); 
    out.close(); 

    String URL ="jdbc:mysql://localhost:3306/test"; 
    String username = "root"; 
    String pw= "root"; 

    Connection con = null; 
    PreparedStatement stmt = null; 
    ResultSet rs =null; 

    try { 
     Class.forName("com.mysql.jdbc.Driver"); 
     con = DriverManager.getConnection(URL,username,pw); 


     stmt = con.prepareStatement(
       "INSERT INTO ver(TName) VALUES(?);"); 
     stmt.setString(1,name); 
     stmt.executeUpdate(); 
     stmt.clearParameters(); 
     stmt.close(); 
    }catch(Exception e) { 

    }finally { 
     try { 
      con.close(); 
     } catch (SQLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 

}는 "GetData의"와 아약스와 "submitdata"매개 변수를 보낼 필요가 마치

+0

if(request.getParameter("submitdata") != null) { if(request.getParameter("getdata") != null) { name += request.getParameter("getdata"); } } 

을 변경하여이 문제를 해결 서블릿? –

+0

'$ .ajax()'호출에'data :'매개 변수가 없습니다. 그래서'request.getParameter ("getdata")'아무것도 찾을 수 없습니다. – Barmar

+0

getData는 내 의 이름입니다. 어떻게 데이터에서 참조 할 수 있습니까? 데이터 : { "name": "getdata"}? – greedsin

답변

0

나는 당신이`name` 변수의 값을 확인 함이

String name=""; 
if(request.getParameter("getdata") != null) { 
     name += request.getParameter("getdata"); 

    } 
0

. 서버 측 코드에서

해당 매개 변수가 존재하지 않는 경우에 당신은 단지 빈 문자열을 다시 보내

if(request.getParameter("submitdata") != null) { 


     if(request.getParameter("getdata") != null) { 
      name += request.getParameter("getdata"); 

     } 
    } 

귀하의 아약스는 다음과 같아야합니다

$("#ajaxtest").submit(function(ev) { 
     var data = $(this).serialize(); 
     data.submitdata = true; 
     ev.preventDefault(); 
     $.ajax({ 
      type:"POST", 
      url:"InsertServlet", 
      dataType: "text", 
      data: data 

     }) 
     .done(function(data){ 
      alert(data); 
      $(activeTD).text(data); 
     }); 
    }); 
+0

또한 submitdata 매개 변수입니다. – Barmar

+0

@Rupert 답장을 보내 주셔서 감사합니다. 그러나 여전히 비어 있습니다. (나는 또한 오류나 무언가가 없기 때문에 무엇을 해야할지 잘 모릅니다 ... – greedsin

+0

HTML을 게시 할 수 있습니까? submitdata는 제출 버튼입니까? serialize()'는 그것을 포함하지 않으며, 양식의 데이터 필드 만 가져옵니다. – Barmar

0

브라우저를 사용하여 요청을 검사 유용. 데이터가 비어있는 이유를 확인하는 데 도움이됩니다.

 - Launch the chrome browser 
    - Right click and select inspect element menu 
    - click on Network tab 
    - Load your URL 
    - Perform the Ajax request 
    - You can see the request here (new request will be last in the list). 
    - Click on it 
    - Right side window shows you request and response data 

편집 :

$("#ajaxtest").submit(function(ev) { 
    var data = $(this).serialize(); 
    data.submitdata = true; 
    ev.preventDefault(); 
    $.ajax({ 
    type:"POST", 
    url:"InsertServlet", 
    dataType: "text", 
    data: data, 
    success:function(data){ // added the success call back 
    console.log(data); // check this in browser console 
    }); 
    }); 
}) 
+0

탭 게시물이 정상적으로 표시됩니다. Parameter getdata testdata 소스 getdata = testdata 및 Respone 탭이 비어 있습니다. – greedsin

+0

이것은 도움이 될 수 있습니다. http://www.javatutorials.co.in/servlet-3-ajax-hello-world-example-using-jquery/ –

+0

오류가 발생했습니다. XML 탭 : XML-Verarbeitungsfehler : Kein 요소 주소 : moz-nullprincipal : {f2c4ef5d-acd5-4ec8-8470-1b9973c1a0c0 } Zeile Nr. 2, Spalte 1 : – greedsin

관련 문제