Ответ 1
JQuery ищет результат типа json, но поскольку перенаправление обрабатывается автоматически, он получит сгенерированный html-источник вашей страницы login.htm
.
Одна идея - позволить браузеру знать, что он должен перенаправить, добавив переменную redirect
к результирующему объекту и проверив его в JQuery:
$(document).ready(function(){
jQuery.ajax({
type: "GET",
url: "populateData.htm",
dataType:"json",
data:"userId=SampleUser",
success:function(response){
if (response.redirect) {
window.location.href = response.redirect;
}
else {
// Process the expected results...
}
},
error: function(xhr, textStatus, errorThrown) {
alert('Error! Status = ' + xhr.status);
}
});
});
Вы также можете добавить переменную заголовка в свой ответ и позволить вашему браузеру решать, куда перенаправить. В Java вместо перенаправления выполните response.setHeader("REQUIRES_AUTH", "1")
, а в JQuery вы делаете успешное (!):
//....
success:function(response){
if (response.getResponseHeader('REQUIRES_AUTH') === '1'){
window.location.href = 'login.htm';
}
else {
// Process the expected results...
}
}
//....
Надеюсь, что это поможет.
Мой ответ сильно вдохновлен этой нитью, который не должен оставлять никаких вопросов, если у вас все еще есть проблемы.