2012-03-14 34 views
5

Tôi có một lớp học java ::làm thế nào để gọi một phương thức lớp java trong javascript bằng cách sử dụng 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(); 


    } 
} 

Điều này sẽ trả lại cho tôi một mảng Json. Bây giờ tôi muốn gọi phương thức() của lớp này trong JavaScript một lần nữa và một lần nữa để có được các giá trị mới khi tôi cập nhật cơ sở dữ liệu của mình. Tôi có một lưới dữ liệu đang hoạt động tốt khi trang tải lần đầu tiên với một tập các giá trị trong mảng json này. Nhưng làm thế nào để làm mới dữ liệu bằng cách sử dụng Ajax. Hoặc cách gọi phương thức() bằng Ajax để dữ liệu được làm mới khi tôi nhấp vào một nút trên trang. Mã nơi tôi đang kêu gọi phương pháp này trong java script là ::

<% 

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

tôi đang nhận lỗi khi truy xuất bộ mới của các giá trị trong temp1 thông qua một cuộc gọi Ajax đến máy chủ. Hãy giúp tôi ? Cảm ơn.

+0

Mã bạn đã cung cấp không phải là Javascript, nó trông giống như một tập lệnh JSP (một cái gì đó hoàn toàn khác). Chính xác thì bạn đang đấu tranh với điều gì? Bạn đã thử viết Javascript tạo yêu cầu AJAX chưa? –

Trả lời

4

Tạo JSP trống (ví dụ, textBoxAjaxResp.jsp) và ngoài đặt chuỗi JSON của bạn từ đó JSP:

<% 

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

<%=temp1 %> 

và nhấn rằng JSP sử dụng jQuery AJAX gọi.

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

Bạn có thể giải thích chi tiết. tạo ra một JSP trống có nghĩa là tôi phải viết không có gì bên trong nó. và Mã cho tập lệnh của tôi cho phép sẽ vẫn ở trên trang nào? –

+0

có một jsp trống và gọi obj.method() của bạn bên trong jsp đó và xuất chuỗi json từ jsp đặt contentType là application/json – Nemoy

+0

Hey i gt yr code. Khi tôi chạy textBoxAjaxResp.jsp của tôi trên một trình duyệt tôi nhận được đầu ra như là một mảng json. Nhưng làm thế nào để lưu trữ nó trong một biến JavaScript để tôi có thể chuyển nó vào nguồn cho lưới dữ liệu của tôi? –

1

bạn có thể sử dụng Direct Web Remoting thư viện để gọi chức năng java sử dụng javascript

Nhưng tôi sẽ đề nghị để viết servlet (hướng dẫn là khá cũ nhưng tốt, bạn nên sử dụng servlet 3.0 nếu có thể) cho mình (thay vì sử dụng DWR mà sẽ có servlet của họ để ghi vào dòng phản hồi, đây là yêu cầu rất đơn giản, do đó bạn nên tự viết servlet thay vì sử dụng thư viện của bên thứ ba) và viết trả lời JSON trực tiếp.

Các vấn đề liên quan