2014-10-15 3 views
0

Как вы размещаете форму (в javascript) и заставляете браузер не ждать ответа? Это вообще возможно? Шаблон, который я хочу создать, - это своего рода шаблон «Огонь и Забыть». Вот код, который выполняет submittion:Как отправить форму, не дожидаясь ответа

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

Использовать Ajax с асинхронным: true – Amy

+0

Как работает ручка ajax? –

+0

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

ответ

0

Если сервер, получающий скрипт, может быть изменен, и они используют PHP, они могут установить ignore user abort, что позволит выполнять публикацию формы, даже если пользователь закрывает iframe или окно. Единственная проблема заключается в том, что вы (и никогда) не знаете, правильно ли это работало, поскольку вы игнорируете ответ.

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

В противном случае форма, которую вы публикуете, позволит игнорировать. Единственное, что вы можете сделать: создать ответ на ответ формы. В противном случае вы всегда можете просто игнорировать его.

+0

Как обрабатывается JavaScript на стороне клиента? дождитесь ответа, пока он не истечет? –

+0

Поскольку вы используете iframe, это не имеет большого значения. IFrame напечатает «ответ» в кадре, но вы можете просто продолжить выполнение после вставки iframe и направления его на URL. Javascript сам по себе асинхронен в том, что он продолжает выполнение, если вы не попросите его ждать чего-то, чего нет. (т. е. единственное действие, которое вы делаете, это вставка iframe с URL-адресом, javascript делает это и движется дальше. Если вы используете 'iframe.load (fn)', тогда 'fn' запускается при загрузке. _Then_ javascript« ждет ») , – somethinghere

Смежные вопросы