2014-10-15 3 views
0

양식을 (자바 스크립트로) 게시하고 응답을 기다리지 않으려면 어떻게합니까? 이것이 가능합니까? 내가 만들고자하는 패턴은 일종의 "Fire and Forget"패턴입니다.응답을 기다리지 않고 양식을 게시하는 방법

var iframe = document.createElement("iframe"); 
var unikString = "UNIQUE STRING"; 
document.body.appendChild(iframe); 
iframe.style.display = "none"; 
iframe.contentWindow.name = unikString; 

var form = document.createElement("form"); 
form.target = unikString; 
form.action = "[THEURL]"; 
form.method = "POST"; 

document.body.appendChild((function(){ 
    document.createElement("input"); 
    input.type = "hidden"; 
    input.name = "NAME"; 
    input.value = "VALUE"; 
    return input; 
})()); 

setTimeout(function() 
{ 
    form.submit(); 
}, 0); 

(. 내가 도메인 외부의 끝 지점에 게시해야하기 때문에 양식 게시이 방법을 수행, 따라서 CORS 문제가 극복해야 함)

+0

async와 함께 Ajax 사용 : true – Amy

+0

아약스는 어떻게 처리합니까? –

+0

http://stackoverflow.com/questions/5750696/how-to-get-a-cross-origin-resource-sharing-cors-post-request-working – Amy

답변

0
다음은 submittion을 수행하는 코드는

스크립트를받는 서버를 수정할 수 있고 PHP를 사용하는 경우 ignore user abort을 입력하면 사용자가 iframe이나 창을 닫더라도 양식 게시가 실행될 수 있습니다. 이것에 대한 유일한 문제는 응답을 무시할 때 이것이 올바르게 작동하는지 여부를 알지 못한다는 것입니다.

http://php.net/manual/en/function.ignore-user-abort.php 

그렇지 않으면 게시중인 양식이 무시됩니다. 당신이 할 수있는 유일한 일은 입니다. 양식의 응답에 대한 응답입니다. 그렇지 않으면 항상 무시할 수 있습니다.

+0

어떻게 클라이언트 측 자바 스크립트가 이것을 처리합니까? 그것이 시간 초과 될 때까지 응답을 기다리는가? –

+0

iframe을 사용 중이므로 별 문제가되지 않습니다. iframe은 프레임에서 '응답'을 인쇄하지만 iframe을 삽입하고 URL로 연결 한 후에 실행을 계속할 수 있습니다. Javascript 자체는 비동기 적이므로 뭔가를 기다릴 것을 요구하지 않는 한 실행을 계속합니다. (즉, 당신이 할 유일한 행동은 URL로 iframe을 삽입하는 것이고, javascript는 그것을 수행하고 계속 진행합니다. 'iframe.load (fn)'을 사용하면 'fn'이로드시에 트리거됩니다. _Then_ javascript 'waits') . – somethinghere

관련 문제