0

In my java project i'm using jsp page. Here I just passing a single parameter and i want to retrieve multiple(3) values from the database. I know how to pass and get single parameter only. But i don't know how to get multiple values by passing single parameter. My ajax code is below:

var request;
function sendInfo1() {
    var v = document.Example.wayid.value;
    // var url = 'Showroutelink.jsp?val='+v+'&start='+v1+'&end='+v2;
    var url = 'Showroutelink.jsp?val='+v;

    if (window.XMLHttpRequest) {

        request = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        request = new ActiveXObject("Microsoft.XMLHTTP");
    }

    try {

        request.onreadystatechange = getInfo1;
        request.open("GET", url, true);
        request.send();

    } catch (e) {
        alert("Unable to connect to server");
    }
}

function getInfo1() {

    if (request.readyState == 4) {
          var val = request.responseText.split('|');



        document.getElementById("start").innerHTML = val[0];
        document.getElementById("end").innerHTML = val[1];
        document.getElementById("waypoints").innerHTML = val[2];
    }
}




This is My Setver side Java code

<%
    String R_Name=request.getParameter("val");
    int w_id=0;


            String wplist = "";
            // String R_Name = request.getParameter("way");

            try {

                String buffer = "<select name='state'>";
                Class.forName("com.mysql.jdbc.Driver");
                java.sql.Connection con = DriverManager.getConnection("jdbc:mysql://localhost/googlemap", "root",
                        "root");
                Statement st = con.createStatement();

                ResultSet rs = st.executeQuery("select start from route where Route_Name='" + R_Name + "'");

                while (rs.next()) {
                    String Startval = rs.getString("start");

                    buffer = buffer + "<option value='" + Startval + "'>" + Startval + "</option>";


                }
                buffer = buffer + "</select>";
                response.getWriter().println(buffer);

            } catch (Exception e) {

            }




             try {

                String buffer1 = "<select name='state'>";
                Class.forName("com.mysql.jdbc.Driver");
                java.sql.Connection con = DriverManager.getConnection("jdbc:mysql://localhost/googlemap", "root",
                        "root");
                Statement st = con.createStatement();

                ResultSet rs = st.executeQuery("select end from route where Route_Name='" + R_Name + "'");

                while (rs.next()) {

                    String Endval = rs.getString("end");

                    buffer1 = buffer1 + "<option value='" + Endval + "'>" + Endval + "</option>";

                }
                buffer1 = buffer1 + "</select>";
                response.getWriter().println(buffer1);
            } catch (Exception e) {

            }




            try {

                String buffer2 = "<select name='state'>";
                Class.forName("com.mysql.jdbc.Driver");
                java.sql.Connection con1 = DriverManager.getConnection("jdbc:mysql://localhost/googlemap", "root",
                        "root");
                Statement st1 = con1.createStatement();

                ResultSet rs1 = st1.executeQuery("select wplist from route where Route_Name='" + R_Name + "'");
                while (rs1.next()) {
                    wplist = rs1.getString("wplist");

                    String wplist1[] = wplist.split("/");
                    buffer2 = buffer2 + "<option value='" + wplist1 + "'>" + wplist1 + "</option>";

                }
                buffer2 = buffer2 + "</select>";
                response.getWriter().println(buffer2);
            } catch (Exception e) {

            } 


    %>

3 Answers3

1

If I got your question right, you are asking how to put more than one query parameter in your request.

The query params structured like this:

Showroutelink.jsp?key_1=value_1&key_2=value_2&key_n=value_n

So you will have just follow this pattern.


If you were asking how to return more than one value from your server call, try using JSON.

euvl
  • 4,716
  • 2
  • 25
  • 30
0

If data returned by your ajax call is JSON string i.e. (responseText = '{ "name":"John", "age":30, "city":"New York"}') then you can use something like this:

function getInfo1() {

    if (request.readyState == 4) {
        var val = request.responseText;
        var obj = JSON.parse(request.responseText);

        document.getElementById("start").innerHTML = obj.start;

        document.getElementById("end").innerHTML = obj.end;
        document.getElementById("waypoints").innerHTML = obj.waypoints;
    }
}

I can answer your question in a better way if you can provide response returned by ajax call.

Zeeshan
  • 619
  • 4
  • 16
0

I didn't fully understand the question as you haven't shared your java code. But in JS you can alway create an array and assign it to url. var v= [para1, para2, para3];

I think this should work. create an array.

var v= [];

then add all the params

v.push(document.Example.wayid1.value);
v.push(document.Example.wayid2.value);
v.push(document.Example.wayid3.value);

Then add to URL like this.

var url = 'Showroutelink.jsp?val=' + v.toString();

In the java end you sholld be able to get.

String[] routeNames=request.getParameter("val");

\\in case error occurs use 
String[] routeNames=request.getParameter("val").split(",");

One more thing, instead of using where clause with "=" use "in" and just loop through resultset.

Ashish Lohia
  • 269
  • 1
  • 12