2016-07-09 3 views
1

저는 sellhouse.jsp를 가지고 있는데, 사용자로부터 이름과 주소를 가져 와서 데이터베이스에 삽입하려고합니다. 값이 데이터베이스에 삽입되기 전에 사용자가 입력 한 주소의 지오 코드를 가져 오기 위해 JavaScript를 호출하려고합니다. 그러나 양식을 제출하기 전에 스크립트가 실행됩니다. 하지만 일단 제출 버튼을 클릭하면 스크립트가 실행되기를 원합니다. 그 외에도 jsp 요소에 지오 코드를 전달해야합니다.JSP에서 자바 스크립트 호출하기

여기서이 (가) submit 버튼을 다시 addEventlistener에 필요한 sellhouse.jsp

<%@page import="java.sql.ResultSet"%> 
<%@page import="javax.swing.JOptionPane"%> 
<%@page import="java.sql.Statement"%> 
<%@page import="java.sql.DriverManager"%> 
<%@page import="java.sql.Connection"%> 
<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>Sell Page</title> 
    </head> 
<body> 
    <h1>Hello World!</h1> 
    <form action="sellHouse.jsp" method="POST"> 
     Name: <input type="text" name="Name" value="" placeholder="please Enter your Name" /> 
     Address1: <input type="text" name="Address1" value="" placeholder="please Enter your Name" /> 
     Address2: <input type="text" name="Address2" value="" placeholder="please Enter your Name" /> 
     City: <input type="text" name="City" value="" placeholder="please Enter your Name" /> 
     State: <input type="text" name="State" value="" placeholder="please Enter your Name" /> 
     Country: <input type="text" name="Country" value="" placeholder="please Enter your Name" /> 
     Zip: <input type="text" name="Zip" value="" placeholder="please Enter your Name" /> 
     <input type="submit" value="submit" name="Submit" /> 
    </form> 
    <% 
     try 
     { 
     String name = request.getParameter("Name"); 
     String addr1 = request.getParameter("Address1"); 
     String addr2 = request.getParameter("Address2"); 
     String City = request.getParameter("City"); 
     String State = request.getParameter("State"); 
     String country = request.getParameter("Country"); 
     String zip = request.getParameter("Zip"); 
     String geocoderadd = name + addr1 + addr2 + City + State + country + zip; 
%> 
<script> 
    function initMap() { 
    //var map = new google.maps.Map(document.getElementById('map'), { 
     //zoom: 8, 
     //center: {lat: -34.397, lng: 150.644} 
    //}); 
    var geocoder = new google.maps.Geocoder(); 

    document.getElementById('submit').addEventListener('click', function() { 
    geocodeAddress(geocoder); 
    }); 

    } 

    function geocodeAddress(geocoder) { 
    //var address = document.getElementById('address').value; 
    //var address = request.getParameter("FirstName"); 
    var address = <%=geocoderadd%>; 
    //alert(address); 
    geocoder.geocode({'address': address}, function(results, status) { 

     if (status === google.maps.GeocoderStatus.OK) { 
      alert("Done"); 
     resultsMap.setCenter(results[0].geometry.location); 
     var marker = new google.maps.Marker({ 
      map: resultsMap, 
      position: results[0].geometry.location 
     }); 
     alert(results[0].geometry.location); 
     } else { 
     alert('Geocode was not successful for the following reason: ' + status); 
     } 
    }); 
    } 

    </script> 
<script async defer 
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDubMBIwomXLLoL2ueDx1tb1ErpsuxnWrE&v=3&callback=initMap" > 
</script> 
    <% 
      int latitude ; 
     int longitude ; 
     if(name!=null){ 
     Class.forName("oracle.jdbc.OracleDriver"); 
     out.println("fkjngskldfng"); 
     Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "OHMS", "OHMS"); 
     Statement st = con.createStatement(); 
     st.executeUpdate("INSERT INTO SELLHOUSE VALUES('" + name + "','" + addr1 + "','" + addr2 + "','" + City + "','" + State + "','" + country + "','" + zip + "','" + latitude + "','" + longitude + "')"); 
     if (st != null) { 
      JOptionPane.showMessageDialog(null, "Registered Successfully"); 
      //session=request.getSession(); 
      //session.setAttribute("userName", userName); 
      response.sendRedirect("index.html"); 
     } 
     } 
     }catch(Exception e){ 
     JOptionPane.showMessageDialog(null, e.getMessage()); 
     } 
    %> 
    </body> 
</html> 

답변

0

내가 생각하지 않는 것입니다. 제출 기능에 event.preventDefault을 추가하면됩니다. 또는 단추 유형을 button으로 변경할 수 있습니다.

// if button type is submit 
document.forms["someFormName"].onsubmit = function(){ 
    var geocoder = new google.maps.Geocoder(); 
    geocodeAddress(geocoder); 
} 
관련 문제