2013-11-02 6 views
1

Я новичок в программировании Ajax. Я использую Jquery ajax для моего запроса на выборку данных на сервер и отображение в виде таблицы. В этом местоположении должен отображаться тип кнопки. как вызвать сервлет конкретного метода, как вернуть данные. Я готов использовать json.can любой поможет мне, как вызвать метод, как вернуть данные. И предложения требуют решения проблемыjquery ajax call servlet method и return json data

заранее.

$('#ajaxbutton').on('click',function(){ 
       $.ajax({ 
        type:"post", 
        url:"Db2", 
        data:{"labid",100}, 
        sucess:function(){ 
         alert("sucess"); 
        } 

       }); 
      }); 

в сервлет

public class Db2 extends HttpServlet { 
    public void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws MalformedURLException, IOException { 
     doProcess(request, response); 
    } 

    public void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws MalformedURLException, IOException { 
     doProcess(request, response); 
    } 

    public void doProcess(HttpServletRequest request, 
      HttpServletResponse response) throws MalformedURLException, 
      IOException { 
     Connection con; 
     PreparedStatement ps, ps1; 
     PrintWriter out = response.getWriter(); 

     try { 

      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
      con = DriverManager.getConnection("jdbc:odbc:oracle1", "system", 
        "sarath"); 
      ps = con.prepareStatement("select trackid,location,to_char(mydate,'dd-mon-yyyy') from information where labid=100"); 
      ResultSet rs = ps.executeQuery(); 

      while (rs.next()) { 
       String location = rs.getString(2); 
       String track = rs.getString(1); 
       String myDate = rs.getString(3); 
      } 

     } catch (Exception e) { 
      out.println(e); 
     } 

    } 
}// end of ServletB 

ответ

0
PrintWriter out = response.getWriter(); 
StringBuffer res = new StringBuffer(); 
while (rs.next()) { 
    String location = rs.getString(2); 
    String track = rs.getString(1); 
    String myDate = rs.getString(3); 
    res.append("{"); 
    res.append("'location':"); 
    res.append(location); 
    res.append(","); 
    res.append("'track':"); 
    res.append(track); 
    res.append(","); 
    res.append("'myDate ':"); 
    res.append("myDate "); 
    res.append("}"); 
} 
out.println(res.toString()); 

должен быть json- строка и ajax могут использовать eval("data = "+r_data+";");

+0

спасибо, что он работает – sarath

+0

no test anser ......... – heqing

+0

он возвращает строку json, преобразованную в JSON.parse(), теперь я хочу отобразить формат таблицы первая запись должен быть введен тип радио – sarath

2

как вызвать сервлет специфический метод В вашем AJAX вы пишете type=post так в сервлет doPost() будет called.if было бы type=get то сервлет doGet() метод будет вызван. Поэтому вы должны написать часть извлечения базы данных в конкретном методе.

Теперь предположим, что вы хотите место, дорожки и MyDate затем попробовать этот способ В сервлета

PrintWriter out.response.getWriter(); 
out.println(location); 
out.println(track); 
out.println(mydate); 

В АЯКС части успеха делают этот путь

success: function(data, textStatus, jqXHR){ 
         alert(data); 
+0

Могу ли я использовать любой другой метод в типе в sted of get/post, и я могу написать return «json»; в методе. Я использую только сервлет для всего приложения – sarath

+0

см. в сервлет doPost или doGet будет вызываться в соответствии с методом формы (например, получить или отправить). – SpringLearner

+0

спасибо, что он работает нормально, но я сомневаюсь, что я использую так много запросов к базе данных в одном сервлете, как отличить только этот метод. обычно мы пишем публичный метод String() {return "jsonstring";}, но здесь невозможно написать оператор возврата, но без необходимости называть весь сервлет – sarath