질문 : jQuery Ajax 호출 후 리디렉션 요청을 관리하는 방법
$.post()
를 사용하여 Ajax를 사용하여 서블릿을 호출 한 다음 결과 HTML 조각을 사용하여 사용자의 현재 페이지에서 div
그러나 세션 시간이 초과되면 서버는 리디렉션 지시문을 보내 사용자를 로그인 페이지로 보냅니다. 이 경우 jQuery는 div
요소를 로그인 페이지의 내용으로 대체하여 사용자의 눈으로 드문 장면을 실제로 목격하게 만듭니다.
jQuery 1.2.6을 사용하여 Ajax 호출에서 리디렉션 지시문을 관리하려면 어떻게해야합니까?
답변
이 질문을 읽고 브라우저가 리디렉션을 투명하게 처리하는 것을 피하기 위해 응답 HTTP 상태 코드 를 278로 설정하는 것과 관련하여 언급 된 접근 방식을 구현했습니다. 이것이 효과가 있었지만 약간의 해킹이므로 약간 불만족 스러웠습니다.
더 많은 것을 파헤친 후에 나는이 접근 방식을 버리고 JSON을 사용했습니다. 이 경우 AJAX 요청에 대한 모든 응답에는 상태 코드 200이 있으며 응답 본문에는 서버에서 구성된 JSON 개체가 포함됩니다. 그런 다음 클라이언트의 JavaScript는 JSON 개체를 사용하여 수행해야 할 작업을 결정할 수 있습니다.
당신과 비슷한 문제가있었습니다. 두 가지 가능한 응답이있는 AJAX 요청을 수행합니다. 하나는 브라우저를 새 페이지로 리디렉션 하고 다른 하나는 현재 페이지의 기존 HTML 양식을 새 페이지로 대체합니다. 이를 수행하는 jQuery 코드는 다음과 같습니다.
$.ajax({
type: "POST",
url: reqUrl,
data: reqBody,
dataType: "json",
success: function(data, textStatus) {
if (data.redirect) {
// data.redirect contains the string URL to redirect to
window.location.href = data.redirect;
} else {
// data.form contains the HTML for the replacement form
$("#myform").replaceWith(data.form);
}
}
});
data.redirect
및 data.form
2 개의 멤버를 갖도록 서버에서 구성됩니다. 이 접근 방식이 훨씬 더 낫다는 것을 알았습니다.
출처 : https://stackoverflow.com/questions/199099/how-to-manage-a-redirect-request-after-a-jquery-ajax-call
'프로그래밍 언어 > jQuery, ajax' 카테고리의 다른 글
jQuery Ajax 오류 처리, 사용자 정의 예외 메시지 표시 (0) | 2021.06.30 |
---|---|
jQuery를 사용하여 "disabled"속성을 제거하는 방법 (0) | 2021.06.29 |
jQuery.each () util에서 다음 반복으로 건너 뛰는 방법 (0) | 2021.06.29 |
어떤 버전의 jQuery가 로드되었는지 확인하는 방법 (0) | 2021.06.28 |
<select> 에 option을 추가하는 손쉬운 방법 (0) | 2021.06.27 |