2017-07-11 3 views
0

私のjavaプロジェクト私はjspページを使用しています。ここでは、単一のパラメータを渡すだけで、データベースから複数の(3)値を取得したいと考えています。私は単一のパラメータだけを渡して取得する方法を知っています。しかし、私は単一のパラメータを渡すことによって複数の値を取得する方法を知りません。私のajaxコードは以下の通りです:ajaxを使用して単一のパラメータを渡して複数の値を取得するにはどうすればよいですか?

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) { 

      } 


    %> 
+0

アレイの使用はいかがですか? – Icewine

+0

* JSON * ...とhttp://jquery.comをご覧ください.AJAXのリクエストはもっと簡単になります... –

+0

私の答えを更新できるように、あなたのajax呼び出しから返されたサンプル応答を提供してください。 – Zeeshan

答えて

1

私はあなたの質問が正しい場合、あなたの要求に複数のクエリパラメータを入れる方法を尋ねています。

クエリは、このような構造のparams:

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

だからあなただけのこのパターンに従っています。


サーバコールから複数の値を返す方法を尋ねる場合は、JSONを試してみてください。あなたは、AJAXによって返された応答を提供することができれば、私はより良い方法であなたの質問に答えることができ

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; 
    } 
} 

+0

はい親愛なるZeshanあなたは正しいです。私は息子を渡す方法を尋ねています。複数のクエリパラメータではありません –

+0

はい確実に親愛なるdev。私はJSONで試してみます –

0

あなたのAJAX呼び出しによって返されたデータはJSON文字列である場合、すなわち(responseText = '{ "name":"John", "age":30, "city":"New York"}')あなたはこのようなものを使用することができますコール。

0

Javaコードを共有していないため、私はこの質問を完全に理解できませんでした。しかし、JSでは、常に配列を作成してURLに割り当てることができます。 var v = [para1、para2、para3];

これはうまくいくと思います。 配列を作成します。

var v= []; 

そして次に、このようなURLに追加しますすべてのparams

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

を追加します。

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

あなたはあなたが得ることができるでしょう。

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

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

「=」でwhere句を使用する代わりに、「in」を使用して結果セットをループするだけでもう1つのことがあります。

+0

親愛なるAshish!..私はサーバーサイドのJavaコードを投稿して私の質問を編集しました。親切に訪問し、疑いを明確にする –

関連する問題