2010-12-29 8 views
0

Dies ist meine Karten-Anwendung ...Passing Array-Werte mit Ajax & JSP

<script type="text/javascript" > 
      function listbox_moveacross(sourceID, destID) 
      { 
       var src = document.getElementById(sourceID); 
       var dest = document.getElementById(destID);    
       for(var count=0; count < src.options.length; count++) { 
        if(src.options[count].selected == true) 
        { 
         option = src.options[count];      
         newOption = document.createElement("option");     
         newOption.value = option.value;       
         newOption.text = option.text;      
         newOption.selected = true;      
         try { 
          dest.add(newOption,null); //Standard 
          src.remove(count,null); 
          alert("New Option Value: " + newOption.value); 
         } 
         catch(error) 
         { 
          dest.add(newOption); // IE only 
          src.remove(count); 
          alert("success IE User"); 
         } 
         count--; 
        } 
       } 
      } 
      function printValues(oSel) 
      { 
       len=oSel.options.length; 
       for(var i=0;i<len;i++) 
       { 
        if(oSel.options[i].selected) 
        { 
         data+="\n"+ oSel.options[i].text + "["+ "\t" + oSel.options[i].value + "]"; 
        } 
       } 
       type=document.getElementById("typeId"); 
       type_text=type.options[type.selectedIndex].text; 
       type_value=document.getElementById("typeId").value; 
      } 

      function GetSelectedItem() 
      { 
       len = document.chart.d.length; 
       i = 0; 
       chosen = ""; 
       for (i = 0; i < len; i++) { 
        if (document.chart.d[i].selected) { 
         chosen = chosen + document.chart.d[i].value + "\n" 
        } 
       } 
       return chosen 
      } 
      $(document).ready(function() { 
       var d; 
       var current_month; 
       var month; 
       var str; 
       var w; 
       var sel; 
       var sel_data; 
       var sel_data_value; 
       $('.submit').click(function(){ 
        // to get current month 
        d=new Date(); 

        w=document.chart.periodId.selectedIndex; 
        sel=document.chart.periodId.options[w].text; 
        for(i=sel;i>=1;i--) 
        { 
         alert(month[i]); 
        } 

        sel_data=document.chart.d.selectedIndex; 
        sel_data_value=document.chart.d.options[sel_data].text; 
        var data_len=document.chart.d.length; 
        var j=0; 
        var chosen=""; 
             for(j=0;j<data_len;j++) 
             { 

              if(document.chart.d.options[i].selected) 
              { 

               chosen=chosen+document.chart.d.options[i].value; 

              } 

             } 

             chart = new Highcharts.Chart({ 
              chart: { 
               renderTo: 'container', 
               defaultSeriesType: 'column' 
              }, 
              title: { 
               text: document.chart.chartTitle.value 
              }, 
              subtitle: { 
               text: 'Source: WorldClimate.com' 
              }, 
              xAxis: { 
               categories: month 
              }, 
              yAxis: { 
               min: 0, 
               title: {text: 'Count' } 
              }, 
              legend: { 
               layout: 'vertical', 
               backgroundColor: '#FFFFFF', 
               align: 'left', 
               verticalAlign: 'top', 
               x: 100, 
               y: 70, 
               floating: true, 
               shadow: true 
              }, 
              tooltip: { 
               formatter: function() { 
                return ''+ 
                 this.x +': '+ this.y +' mm'; 
               } 
              }, 
              plotOptions: { 
               column: { 
                pointPadding: 0.2, 
                borderWidth: 0 
               } 
              }, 
              series: [{ 
                name: sel_data_value, 
                data: [50, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4] 

               }, { 
                name: 'New York', 
                data: [83.6, 78.8, 98.5, 93.4, 106.0, 84.5, 105.0, 104.3, 91.2, 83.5, 106.6, 92.3] 

               }, { 
                name: 'London', 
                data: [48.9, 38.8, 39.3, 41.4, 47.0, 48.3, 59.0, 59.6, 52.4, 65.2, 59.3, 51.2] 

               }, { 
                name: 'Berlin', 
                data: [42.4, 33.2, 34.5, 39.7, 52.6, 75.5, 57.4, 60.4, 47.6, 39.1, 46.8, 51.1] 

               }] 
             }); 

       }); 
      }); 


     </script> 
     <%! Connection con = null; 
      Statement stmt = null; 
      ResultSet rs = null; 
      String url = "././sample"; 
      String user = "sample"; 
      String pass = "sample"; 
      String query = ""; 
      int mid; 
     %> 
     <% 
        Class.forName("org.postgresql.Driver"); 
        con = DriverManager.getConnection(url, user, pass); 
        System.out.println("Connected to Database"); 
        stmt = con.createStatement(); 
        rs = stmt.executeQuery("select name,id from sam"); 
     %> 
    </head> 
    <body> 
     <form method="post" name="chart"> 
      <fieldset> 
       <legend>Chart Options</legend> 
       <br /> 
       <label for="hstate">Plant:</label> 
       <select name="plantId" size="1" id="plantId" > 
        <% while (rs.next()) { 
        %> 
        <option value="<%=rs.getString("code")%>"><%=rs.getString("description")%></option> 
        <% 
           } 
           String plant = request.getParameter("hstate"); 
           System.out.println("Selected Plant" + request.getParameterValues("plantId")); 
        %> 
       </select> 

       <br /> 
       <label for="hcountry">Period</label> 
       <select name="periodId" id="periodId"> 
        <option value="0">1</option> 
        <option value="1">2</option> 
        <option value="2">3</option> 
        <option value="3">4</option> 
        <option value="4">5</option> 
        <option value="5">6</option> 
       </select> 

       <br/> 

       <label for="hstate" >Interval</label> 
       <select name="intervalId" id="intervalId"> 
        <option value="day">Day</option> 
        <option value="month" selected>Month</option> 
       </select> 
      </fieldset> 
      <fieldset> 
       <legend>Chart Data</legend> 
       <br/> 
       <br/> 

       <table > 
        <tbody> 
         <tr> 
          <td> 
           &emsp;<select multiple name="data" size="5" id="s" style="width: 230px; height: 130px;" > 


            <option value="<%=field%>"><%=list[i]%></option> 
            <% 
                            } 
            %> 
           </select> 
          </td> 
          <td> 
           <input type="button" value=">>" onclick="listbox_moveacross('s', 'd')" /><br/> 
           <input type="button" value="<<" onclick="listbox_moveacross('d', 's')" /> &emsp; 
          </td> 
          <td> &emsp; 
           <select name="selectedData" size="5" id="d" style="width: 230px; height: 130px;"> 
           </select></td> 
           </tr> 
        </tbody> 
       </table> 
       <br/> 
      </fieldset> 
      <fieldset> 
       <legend>Chart Info</legend> 
       <br/> 
       <label for="hstate" >Type</label> 
       <select name="typeId" id="typeId"> 
        <option value="" selected>select...</option> 
        <option value="bar">Bar</option> 
       </select> 
       <br/> 
       <label for="uname" id="titleId">Title </label> 
       <input class="text" type="text" name="chartTitle"/> 

       <br /> 
       <label for="uemail2">Pin to Dash board:</label> 
       <input class="text" type="checkbox" id="pinId" name="pinId"/> 
      </fieldset> 
      <input class="submit" type="button" value="Submit" /> 
      <!--onclick="printValues(s)"--> 
     </form> 
     <div id="container" style="width: 800px; height: 400px; margin: 0 auto"> 
     </div> 
    </body> 
</html> 

Javascript-Funktion, sind Speicher der ausgewählten Listbox Werte in 'sel_data_value'. Ich muss diese ausgewählten Array-Werte an die Datenbank übergeben, um Werte bezüglich der Auswahl abzurufen. Wie kann ich das mit Ajax tun? Ich weiß, wie man Array-Werte in Ajax übergeben und aus der Datenbank abrufen kann.

Danke.

Antwort

1

Um ein Array an Ihr Backend zu übergeben, werden Sie wahrscheinlich die Array-Werte in einer Zeichenfolge mit einer Art Trennzeichen verketten wollen. Ihr Skript im Backend würde dann die Zeichenfolge in die einzelnen Werte aufteilen.

+0

@Maya: Ist diese Antwort klar oder wäre eine weitere Erklärung hilfreich? – Kyle

+0

ya danke Kyle .. kannst du mir ein Beispiel geben ... – Maya

+0

wie das geht. Gibt es ein Beispiel, das Sie hier angeben können? – Maya