프로그래밍 언어/jQuery, ajax

jQuery Ajax 호출 후 리디렉션 요청을 관리하는 방법

Rateye 2021. 6. 29. 10:08
728x90
반응형

 

질문 : 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.redirectdata.form 2 개의 멤버를 갖도록 서버에서 구성됩니다. 이 접근 방식이 훨씬 더 낫다는 것을 알았습니다.

출처 : https://stackoverflow.com/questions/199099/how-to-manage-a-redirect-request-after-a-jquery-ajax-call
728x90
반응형