2017-02-20 3 views
-1

Я новичок в ajax и хочу получить данные из класса action в jsp.Как получить данные из класса action в jsp с помощью ajax в struts2?

Файл: getRole.jsp

<head> 
<script type="text/javascript"> 
var request; 
function loaddata() 
{ 
    var id = document.getElementById("newRole").value; 
    alert("hi : "+ id); 
    var xhttp; 
     xhttp = new XMLHttpRequest(); 
     xhttp.onreadystatechange = function() { 
     if (this.readyState == 4 && this.status == 200) { 
      document.getElementById("display_info").innerHTML = this.responseText; 
      } 
     }; 
     xhttp.open("GET", "loadData?id="+id, true); 
     xhttp.send(); 
} 

</script> 
</head> 
<body> 
<div class="container-fluid"> 
    <div class="col-sm-2"></div> 
    <div class="col-sm-8"> 
     <label for="focusedInput" id="abc"><h4>Enter Id : </h4></label> 
     <input type="text" class="form-control" name="newRole" id="newRole" onkeyup="loaddata();"> 
     <div id="display_info" ></div> 
    </div> 
    <div class="col-sm-2"></div> 
</div> 
</body> 

Файл: loadData.java

public class loadData extends ActionSupport implements ServletRequestAware, ServletResponseAware{ 

private static final long serialVersionUID = 1L; 
String url = "jdbc:mysql://localhost:3306/struts"; 
String user = "username"; 
String pass = "password"; 
HttpServletRequest request; 
HttpServletResponse response; 

@Override 
public void setServletRequest(HttpServletRequest request) { 
    // TODO Auto-generated method stub 
    this.request = request; 
} 

public HttpServletRequest getServletRequest() { 
    return request; 
} 

@Override 
public void setServletResponse(HttpServletResponse response) { 
    // TODO Auto-generated method stub 
    this.response = response; 
} 

public HttpServletResponse getServletResponse() 
{ 
    return response; 
} 

public String execute() 
{ 
    try{ 
     String id = request.getParameter("id"); 
     String name = "null."; 
     System.out.println("in servlet : " + id); 

     Class.forName("com.mysql.jdbc.Driver"); 
     java.sql.Connection con =DriverManager.getConnection(url, user, pass); 

     String s = "select * from tempemp where id="+id; 
     Statement st = con.createStatement(); 
     ResultSet rs = st.executeQuery(s); 

     while(rs.next()) 
     { 
      name = rs.getString("role"); 
      System.out.println(name); 
     } 
     PrintWriter out = response.getWriter(); 
     out.println("Name: "+name); 
     con.close(); 
    } 
    catch(Exception e){ 
     e.printStackTrace(); 
    } 
    return SUCCESS; 
} 
} 

Я хочу, чтобы получить Id от пользователя, а затем распечатать роль на основе этого Id. Я только хочу использовать ajax не json. Поэтому, пожалуйста, ответьте мне только на ajax-код.

ответ

1

Вы должны вернуть null в действие вместо успеха. Возврат null не будет обрабатывать, он просто отправит текущий отзыв клиенту.

Возврат SUCCESS будет искать определенную страницу jsp, определенную для этого результата в файле struts.xml.

this.responseText Вы получите name. Дополнительная информация https://struts.apache.org/docs/ajax.html

+0

Я также пробую этот код. response.setContentType ("text/plain"); response.setCharacterEncoding ("UTF-8"); response.getWriter(). Write (name); –

+0

@ParthPatel Это будет работать точно. – udaybhaskar

+0

Thanx @udaybhaskar. Я меняю «успех» на «null», и он работает. Можете ли вы объяснить мне, почему «null» в типе результата? –

Смежные вопросы