из mysql в javascript

#javascript #mysql

#javascript #mysql

Вопрос:

Я пытаюсь нарисовать полилинию с координатами из mysql с помощью функции javascript в файле jsp Я попробовал приведенный ниже код, но он не работает!

 <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
  function initialisation(){
    var centreCarte = new google.maps.LatLng( 47.381381, 0.687503 );
    var optionsCarte = {
      zoom: 12,
      center: centreCarte,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }

    Class.forName("com.mysql.jdbc.Driver");

    Connection conn = null;
    Statement state = null;
    ResultSet resul= null;

    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/new","root","pass");
    state=connection.createStatement();
    String sql ="SELECT lat, lng from Route ";

    result = statement.executeQuery(sql);
    while(result.next()){
      s1= result.getFloat(lat);
      s2= result.getFloat(lng);

      var maCarte = new google.maps.Map( document.getElementById( "EmplacementDeMaCarte" ), optionsCarte );
      var tableauPointsPolyline = [
        new google.maps.LatLng(" s1  "," s2 ")
      ];
      var optionsPolyline = {
        map: maCarte,
        path: tableauPointsPolyline
      };
      var maPolyline = new google.maps.Polyline( optionsPolyline );
    }
    google.maps.event.addDomListener( window, 'load', initialisation );
  }
</script>
 

Что необходимо для устранения указанной проблемы?

Комментарии:

1. Доступ к базе данных с помощью PHP. Почитайте об Ajax.

2. Я работаю с J2EE!

3. «Это не работает» обычно этого недостаточно для выявления проблемы. Рассмотрите возможность добавления более подробной информации о том, что не работает.

Ответ №1:

Прекратите пробовать случайный код! Кроме того, не путайте Java и JavaScript. В опубликованном вами коде используются скриплеты, и вы пропустили символы <% %>,

 <%
Class.forName("com.mysql.jdbc.Driver");

Connection conn = null;
Statement state = null;
ResultSet resul= null;

// Do you have mysql on localhost listening to 3306. Is there a new db? Is root's 
// password really pass?
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/new","root","pass");
state=connection.createStatement();
String sql ="SELECT lat, lng from Route ";

result = statement.executeQuery(sql);
while(result.next()){
  %>
  s1=<%= result.getFloat(lat) %>;
  s2=<%= result.getFloat(lng) %>;
<% } %>
 

Обратите внимание, что вы не должны использовать модель 1 в 2014 году (смешивание Java в целом, но особенно кода JDBC, в JSP вызывает проблемы).

Ответ №2:

 <%@page import="java.util.Arrays"%>

<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>


<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<title>Simple Polylines</title>
<style>
html,body {
    height: 100%;
    margin: 0;
    padding: 0;
}

#map {
    height: 100%;
}
</style>
</head>
<body>
    <div id="map"></div>

<%! 
public static float[] getFloats(List<Float> val){
    int length = val.size();
    float[] result = new float[length];
    for (int i = 0; i < length; i  ) {
      result[i] = val.get(i).floatValue();
    }
    return resu<
  }
%>

<%!String string=null; %>
<%
string=request.getParameter("orderId");<!--getting order_id from another jsp by getparameter-->
out.println(string);
%>


    <%


Class.forName("com.mysql.jdbc.Driver"); 
java.sql.Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/your_DB","username","pass"); 
Statement st= con.createStatement(); 

String query="SELECT latitude,longitude FROM yourtable where order_id=" string;
ResultSet rs=st.executeQuery(query); 
//String[] lonlat;
List<Float> list=new ArrayList<Float>();

while(rs.next())
{
    String s1=rs.getString(1);
    String s2=rs.getString(2);
    float f1 = Float.parseFloat(s1);
    float f2 = Float.parseFloat(s2);
    list.add(f1);
    list.add(f2);

}

float[] arr=getFloats(list);
for(int i=0;i<arr.length;i  ){
    System.out.println(arr[i]);

}
System.out.println(arr);
System.out.println(Arrays.toString(arr));

if(arr != null) { %>
<script>
var params = new Array(<%
for(int i = 0; i < arr.length; i  ) {
  out.print(""" arr[i] """);
  if(i 1 < arr.length) {
    out.print(",");
  }
}
%>);
</script>
<% } %>

<!-- float[] lonlat=new float[list.size()]; 
System.out.println(lonlat.toString()); -->

%>
    <script type="text/javascript">
    <%-- var z=  [<%= lonlat%>]  --%> 
    <%-- var z =  <%= items.toString() %>  --%>
        <%-- var z = [ <%= values.toString() %> ]; --%>
         var z =  <%= Arrays.toString(arr) %> ; 
// var z =  [55.02,-122.214,21.291,-157.821,-18.142,178.431,-27.467,153.027]  
 alert(params);
var flightPlanCoordinates = [
    {lat: z[0], lng: z[1]},
    {lat: z[2], lng: z[3]},
    {lat: z[4], lng: z[5]},
    {lat: z[6], lng: z[7]}
];
function initMap() {
  var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 16,
    center:{lat:28.6443,lng:77.3563},
    /* center: {lat: 0, lng: -180}, */
    mapTypeId: 'terrain'
  });

  var flightPath = new google.maps.Polyline({
    path: flightPlanCoordinates,
    geodesic: true,
    strokeColor: '#FF0000',
    strokeOpacity: 1.0,
    strokeWeight: 2
  });

  flightPath.setMap(map);
}


    </script>
    <script async defer
        src="https://maps.googleapis.com/maps/api/js?key=YOURAPIKEYamp;callback=initMap">
    </script>
</body>
</html>