2016-07-09 20 views
1

Ich habe eine sellhouse.jsp, wo ich versuche, die Werte, z. B. Name und Adresse vom Benutzer zu bekommen und diese in die Datenbank einzufügen. Bevor die Werte in die Datenbank eingefügt werden, versuche ich das JavaScript aufzurufen, um den Geocode der vom Benutzer eingegebenen Adresse zu erhalten. Aber bevor ich das Formular abschicke, wird das Skript ausgeführt. Aber ich möchte, dass das Skript ausgeführt wird, sobald ich auf "Senden" klicke. Außerdem möchte ich, dass der Geocode an das Element jsp übergeben wird.JavaScript von JSP aufrufen

Hier ist die 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> 

Antwort

0

Ich glaube nicht, dass du addEventlistener müssen wieder auf die der submit Taste. Alles, was Sie tun können, ist event.preventDefault der Submit-Funktion hinzuzufügen. Oder Sie können den Schaltflächentyp auf button ändern.

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