如何使用ajax在javascript中调用java类方法?

我有一个java类::

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 rowValues = new ArrayList(); List rowValues1 = new ArrayList(); 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(); } } 

这是给我一个Json数组。 现在我想一次又一次地在JavaScript中调用此类的method()来获取新值,因为我更新了我的数据库。 我有一个数据网格工作正常,因为页面第一次加载此json数组中的一组值。 但是如何使用Ajax刷新数据。 或者如何使用Ajax调用method(),以便在单击页面上的按钮时刷新数据。 我在java脚本中调用此方法的代码是::

  

我在通过对服务器的Ajax调用中检索temp1中的新值集时遇到问题。 请帮忙 ? 谢谢。

创建一个空白JSP(例如, textBoxAjaxResp.jsp )并从该JSP中输出您的JSON字符串:

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

并使用jQuery AJAX调用命中该JSP。

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

您可以使用Direct Web Remoting库使用javascript调用java函数

但我建议你自己编写servlet (教程很老但很好,你应该使用servlet 3.0 )(而不是使用DWR,它们的servlet也会写入响应流,这也是非常简单的要求所以你应该写servlet自己而不是使用第三方库)并直接编写JSON响应。

您可能希望在此处查看我的答案更新jsp页面的内容而不刷新它使用SpringMVC类,该类使用jquery ajax从服务器端向客户端返回文本值。