2015-02-05 4 views
0

У меня есть запрос (исходящий от моего самого локального хоста на данный момент), который отправляет ajax почтовый запрос с dataType, установленным на json. На jsp этот request разобран и основан на некоторых условиях, я делаю перенаправление на другую страницу (которая находится на сервере).Браузер не рендеринга перенаправляет url

Теперь я понимаю, что перенаправление предназначено только для ресурса, который существует на другом сервере. Однако даже с .forward(), я столкнулся с той же проблемой, описанной ниже. Мой клиент сторона (опять же, этот файл находится на сервере, только на данный момент) является:

Somefile.html:

<html> 
<head> 
<script type="text/javascript"  
src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"> 
</script> 
<script type="text/javascript"> 

    $(document).ready(function() { 


var payload = new Object(); 

payload.userInfo = new Object(); 

payload.userInfo.firstName = "Sam"; 
payload.userInfo.lastName = "Peter"; 
payload.userInfo.emailAddress = "[email protected]"; 


payload.accountInfo = new Object(); 
payload.accountInfo.accountId = "12321"; 
payload.accountInfo.agentName = "Harry"; 
payload.accountInfo.terminalId = "1322"; 

payload.locale = "en-US"; 
payload.loggedIn = "true"; 


var payloadjson = JSON.stringify(payload); 


     $('#call').click(function() 
     { 

      $.ajax({ 
       type: "post", 
       url: "http://localhost:8280/Somepath/FormFiller.jsp", 
    //this is my servlet 
     dataType: "json", 
       success: function(data){  
         $('#output').append(data); 
       }, 
     data: {postData:payloadjson} 
      }); 
     }); 

    }); 
</script> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>JSP Page</title> 
</head> 
<body> 
<input type="button" value="Call Servlet" name="Call Servlet" id="call"/> 
<div id="output"></div> 
</body> 
</html> 

А на стороне сервера: FormFiller.jsp

<%@ page language="java" contentType="application/x-www-form-urlencoded; 
charset=ISO-8859-1" 
pageEncoding="ISO-8859-1"%> 

<%@ page import="org.json.simple.JSONObject"%> 
<%@ page import="org.json.simple.JSONValue"%> 


<% 
//response.setHeader("Access-Control-Allow-Origin",  
request.getHeader("Origin")); 

request.setCharacterEncoding("utf8"); 
response.setContentType("application/json"); 

JSONObject jsonObj = (JSONObject)  
JSONValue.parse(request.getParameter("postData")); 

JSONObject userInfo = (JSONObject) 
JSONValue.parse(jsonObj.get("userInfo").toString()); 

JSONObject accountInfo = (JSONObject) 
JSONValue.parse(jsonObj.get("accountInfo").toString()); 
String locale = (String) jsonObj.get("locale"); 
String loggedIn = (String) jsonObj.get("loggedIn"); 

out.println(userInfo.get("firstName")); 
out.println(userInfo.get("lastName")); 
out.println(userInfo.get("emailAddress")); 

out.println(accountInfo.get("accountId")); 
out.println(accountInfo.get("agentName")); 
out.println(accountInfo.get("terminalId")); 

out.println(locale); 
out.println(loggedIn); 


if(loggedIn == "false") { 

// Redirect to some site 

} 

else { 

out.println(request.getContextPath()); 
// Redirect to some other site and fill the form 
response.sendRedirect("/somepath/xxx/yyy/zzz"); // zzz is some html file 
return; 
} 
%> 

Хотя я получаю response (когда я смотрю консоль разработчика на хроме), ответ (страница перенаправления) не отображается в браузере, поэтому я вижу визуально все элементы управления/метки и т. Д.

Я тоже пробовал эту проблему, но по той же проблеме (визуально не видел ответ на браузер).

getServletContext().getRequestDispatcher("/xxx/yyy/zzz").forward(request, 
    response); 

Просьба помочь.

ответ

1

Вы должны понимать смысл ajax, он является

обновление части веб-страницы без перезагрузки всей страницы

Так что в вашем случае, если вы пытаетесь визуализировать или перенаправлять представление (страница). Просто сделайте http-запрос вместо ajax-вызова.

Incase частичного зрения, я советую вам сделать его, как ,,

$('#output').html(data); 

в вашем АЯКС успеха

+0

ОК. Но $ ('# output'). Html (data) тоже не помогает :(Но теперь позвольте мне просто попробовать httprequest. Спасибо за комментарий. – svk

0

Так что, я думаю, что запрос GET будет достаточно в этом случае. POST здесь не требуется, поскольку мы не создаем/не редактируем и не удаляем что-либо на сервере на основе полезной нагрузки после запроса. Я нашел этот пост - How to redirect with post data

Если, в случае, мы обязательно нуждаемся в POST только здесь. Для моего варианта использования достаточно GET. Спасибо за помощь.

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