wywołanie ajax do serwletu i przekierowanie do jsp


Tutaj w poniższym kodzie chcę wywołać serwlet przez ajax, a następnie przekierować dane z serwletu do jsp.ajax wywołanie serwletu działa dobrze, ale problem polega na tym, że przekierowanie do strony jsp nie jest wyświetlane w przeglądarce i to samo Strona jsp jest wyświetlana, gdy użyłem kodu javascript bez ajax.
kod javascript Ajax w pliku jsp:
function generate(){......
var url="RedirectServlet";
var ajax=new AJAXInteraction(url,"RedirectServlet");
var param ="FD="+FD+"&TD="+TD+"&actionid="+status+"&usercode="+usercode+"&action=reports"+"";
ajax.send(param);....
}
function AJAXInteraction(url, actionType) {
this.url = url; var req = init();
var actionRequested = actionType;
req.onreadystatechange = processRequest;
function init() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
} else if (window.ActiveXObject) {
return new ActiveXObject("Microsoft.XMLHTTP");
}
} function processRequest () {
if (req.readyState == 4) {
if (req.status == 200) {
if(actionRequested=="TestDelegation") {
PostProcess1(req.responseXML);
} }
}
}
this.send = function(param) {
req.open("POST", url, true); req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); req.send(param);
}
}//end of AJAX Interaction object.

Kod serwletu:
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
System.out.println("calling doPost() "); response.setContentType("text/html;charset=WINDOWS-1256");
String action=request.getParameter("action");
System.out.println(action); if(action.equals("reports")){
System.out.println("inside reports");//Getting values from Reports_arb.jsp
String Fromdate=request.getParameter("FD");
String Todate=request.getParameter("TD");
String status=request.getParameter("actionid");
String usercode=request.getParameter("usercode");//placing given values in a session
request.setAttribute("FD", Fromdate);
request.setAttribute("TD", Todate);
request.setAttribute("actionid", status);
request.setAttribute("usercode", usercode);
//Redirecting to showReport_arb.jsp
//response.sendRedirect("showReport_arb.jsp"); ServletContext sc = getServletContext();
sc.getRequestDispatcher("/sample.jsp").forward(request, response);

Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Powinieneś zrozumieć, że wysyłając żądanie http z ajax, oznacza to, że wysyłasz żądanie w osobnym wątku, a nie w głównym wątku (ta sama strona, z której wysyłasz żądanie). W ten sposób przekierowanie w serwlecie nie będzie miało wpływu na klienta. Aby to osiągnąć, odeślij adres URL, na który chcesz przekierować w odpowiedzi na żądanie, a przy pomyślnej metodzie ajax po prostu użyj skryptu java window.location (URL);
Na serwlecie
JSONObject jobj = new JSONObject()
String urlToRedirect = "test.jsp";
jobj.put("url",urlStr);
response.getWriter().write(jobj.toString());

Strona klienta
$.ajax({
url: 'servletName',
data: {
userID: selectedID
},
type: 'post',
success: function(data){
window.location = data.url;
} });
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Zamiast tworzyć obiekty
request
i
response
, użyj
jquery Ajax
. Jest bardzo łatwy w użyciu.
/* Send the data using post and put the results in a div */ $.ajax({
url: "/YourServlet",
type: "post",
data: values,
success: function(){
alert("success");
$("#result").html('submitted successfully');
},
error:function(){
alert("failure");
$("#result").html('there is error while submit');
}
});

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się