2012-03-14 11 views
5

Ho una classe java ::come chiamare un metodo di classe java in javascript usando ajax?

package MyPackage; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import java.util.ArrayList; 
import java.util.List; 

import net.sf.json.JSONArray; 
import net.sf.json.JSONObject; 

import com.google.gson.Gson; 

public class PopulateTextbox { 

    Gson gson = new Gson(); 
    JSONObject obj = new JSONObject(); 
    JSONArray arr = new JSONArray(); 
    String temp1; 

    String temp; 
    List <String>rowValues = new ArrayList<String>(); 
    List <Integer>rowValues1 = new ArrayList<Integer>(); 
    String[] contactListNames; 
    Connection con=null; 
    Statement st=null; 
    ResultSet rs=null; 


    public String method(){ 


     try{ 


     String driver = "sun.jdbc.odbc.JdbcOdbcDriver"; 
     Class.forName(driver); 

     String db = "jdbc:odbc:Practice_Database"; 
     con = DriverManager.getConnection(db,"",""); 

     st = con.createStatement(); 
     String sql = "SELECT Emp_Name,ID,Email_Add FROM EmployeeSearch"; 
     rs = st.executeQuery(sql); 

     while(rs.next()){ 
      obj.put("ID", rs.getInt("ID")); 
      obj.put("Names",rs.getString("Emp_Name")); 
      obj.put("Email", rs.getString("Email_Add")); 
      arr.add(obj); 

     } 
     //obj.accumulate("ID",rowValues1); 

     //obj.accumulate("Names",rowValues); 
     temp1 = arr.toString(); 
     System.out.println(temp1); 

    }catch(Exception e){System.out.println(e);} 
    /*finally{ 
     try { 
       if(con!=null)con.close(); 
      } catch (SQLException e) { 

       e.printStackTrace(); 
      } 
     try { 
      if(rs!=null)rs.close(); 
     } catch (SQLException e) { 

      e.printStackTrace(); 
     }try { 
      if(st!=null)st.close(); 

     } catch (SQLException e) { 

      e.printStackTrace(); 
     } 


    }*/ 
     return temp1; 

    } 
    public static void main(String args[]) 
    { 
     PopulateTextbox obj = new PopulateTextbox(); 
     String temp1= obj.method(); 


    } 
} 

Questo mi sta tornando una matrice JSON. Ora voglio chiamare method() di questa classe in JavaScript ancora e ancora per ottenere nuovi valori mentre aggiorno il mio database. Ho una griglia di dati che funziona bene quando la pagina viene caricata per la prima volta con un set di valori in questo array json. Ma come aggiornare i dati usando Ajax. O come chiamare il metodo() usando Ajax in modo che i dati vengano aggiornati quando clicco su un pulsante nella pagina. Il codice dove sto chiamando questo metodo in java-script è ::

<% 

    String temp1; 
    PopulateTextbox obj = new PopulateTextbox(); 
    temp1 = obj.method(); 
    %> 

sto ottenendo problema nel recupero nuova serie di valori in temp1 tramite una chiamata Ajax al server. per favore aiuto ? Grazie.

+0

Il codice che hai fornito non è Javascript, sembra uno scriptlet JSP (qualcos'altro). Con cosa stai lottando esattamente? Hai provato a scrivere Javascript che fa una richiesta AJAX? –

risposta

4

Creare una JSP vuota (per esempio, textBoxAjaxResp.jsp) e fuori mettere la stringa JSON da quel JSP:

<% 

String temp1; 
PopulateTextbox obj = new PopulateTextbox(); 
temp1 = obj.method(); 
%> 

<%=temp1 %> 

e ha colpito che JSP utilizzando jQuery AJAX chiamata.

$.get("mypath/textBoxAjaxResp.jsp", function (response) { 
    //do operation using the response 
}, "json"); 
+0

Potete spiegarlo in dettaglio. creare un JSP vuoto significa che non devo scrivere nulla al suo interno. e il codice per il mio script lasciato rimarrà su quale pagina? –

+0

sì un jsp vuoto e chiama il tuo obj.method() all'interno di quel jsp ed emette la stringa json da quel jsp set contentType to application/json – Nemoy

+0

Hey i gt yr code. Quando eseguo il mio textBoxAjaxResp.jsp su un browser, ottengo l'output come array json. Ma come archiviarlo in una variabile JavaScript in modo che possa passarlo al sorgente per la mia griglia di dati? –

1

è possibile utilizzare Direct Web Remoting libreria per richiamare le funzioni Java utilizzando JavaScript

ma vorrei suggerire di scrivere servlet (tutorial è piuttosto vecchio, ma bene, è necessario utilizzare servlet 3.0 se possibile) da soli (invece di usare DWR che sarà avere il loro servlet per scrivere nel flusso di risposta anche questo è un requisito molto semplice, quindi dovresti scrivere servlet tu stesso invece di usare la libreria di terze parti) e scrivere direttamente la risposta JSON.

Problemi correlati