2011-01-04 8 views
2

그는 성공적인 Ajax 호출 후 다른 페이지로 리디렉션하는 방법에 대한 많은 해답을 보았지만 모두 GET 메서드를 사용합니다. 대신 POST 메서드를 사용하여 새 페이지에 매개 변수를 전달하고 싶습니다. 어떻게 할 수 있습니까?POST를 사용하여 Ajax 리디렉션

+0

매개 변수는 GET 요청과 마찬가지로 POST 요청에 저장되지 않으므로 매개 변수를 다른 방식으로 전달해야합니다. – Eugene

+0

죄송합니다. 명확히하기 위해 브라우저와 함께 정상적으로 양식을 제출하는 것처럼 현재 페이지를 AJAX가없는 새 URL로 리디렉션 하시겠습니까? 아니면 원래 AJAX POST가 이제는 새로운 URL로 연결되기를 원하십니까? 301 AJAX POST (GET 대신) 301 리디렉션 응답의 경우? – jamiebarrow

답변

1

POST 요청을 수행하도록 브라우저를 프로그래밍 방식으로 설정할 수는 없으며 XMLHTTPRequest 코드 만 사용할 수 있습니다.

var params = {name: 'lonesomeday', website: 'stackoverflow'}; 

var form = document.createElement('form'); 
form.action = 'http://example.com'; 
form.method = 'post'; 

for (var key in params) { 
    if (params.hasOwnProperty(key) { 
     var field = document.createElement('input'); 
     field.type = 'hidden'; 
     field.name = key; 
     field.value = params[key] 

     form.appendChild(field); 
    } 
} 

document.body.appendChild(form); 
form.submit(); 
+0

당신은 XMLHttpRequest를 사용하여 POST 요청 메소드로 요청을 보낼 수 있습니다 ... 제출을 할 새로운 양식을 만드는 것이 과잉이라고 생각하십니까? – jamiebarrow

+0

@ jamiebarrow 나는 그 반대라고 주장 할 것이다. 하나의 HTTP 요청으로 전체 작업을 수행 할 수있을 때 URL을 가져 오기 위해 XMLHTTPRequest 전체를 수행하는 것은 과도한 작업입니다. – lonesomeday

+0

음, 어제 나는 이것을 다르게 읽었다. AJAX POST (jQuery.ajax 사용)를 사용하여 응답이 301 영구 리디렉션 인 URL에 문제가 발생하면 라이브러리는 새 위치에 GET 요청을 수행합니다. 그러나 내 시나리오에서는 AJAX를 통해 새 URL로 POST를 수행하고 현재 페이지를 정상적으로 새 URL로 리디렉션하지 않아야합니다. 이것을 다시 읽은 후, O.P.가 정상적인 AJAX POST를 수행 한 후 페이지를 리디렉션하는 방법을 묻는 것 같습니다. 혼란 스러웠습니다 :) 다른 사람들도 혼란스럽게한다면 미안 해요! :) – jamiebarrow

2

그럼 내가 전에이 문제를 직면하고이 작업을 수행 할 수있는 유일한 방법은 같다 : 당신이 할 수있는 최선은, 당신이 제출하려는 데이터를 새로운 form 요소를 생성 그것에 submit를 호출하여 시뮬레이션입니다 (어쩌면 내가 잘못) AJAX 성공 콜백 함수를 정의하고 해당 콜백 함수에서 리디렉션 될 수 있습니다. 원하는 경우 AJAX 응답에서 리디렉션 URL 자체를 되돌려 보내고 콜백 함수에서 리디렉션 URL을 읽을 수 있습니다.

관련 문제