2017-01-05 4 views
0

次のコードのようなjavascriptを使用して、新しいページに移行する前にサーバーにデータを送信するリダイレクトページを作成しようとしています。JavaScriptで、新しいページに移行する前にサーバーにデータを送信するリダイレクトページ

<body> 

<script type="text/javascript"> 

**** 
light transaction about cookie 
**** 

document.createElement("img").setAttribute("src", "server.php?param1=cookiedata"); 

location.href = "new_page.html"; 

</script> 

</body> 

はしかし、 "new_page.html" にリダイレクトする前に、時には

document.createElement("img").setAttribute("src","server.php?param1=cookiedata"); 

は呼ばず、 "server.phpという" にデータを送信することはできません。

リダイレクト時間が短いという問題はありますか?

解決方法を教えてください。

答えて

0

リダイレクトが発生する前に、ソースマテリアルをロードする要求が送信されないことがあるという問題があります。

解決方法は簡単です。onloadイベントを使用して、imgがロードされた後に呼び出されるハンドラを追加できます。

ので、このような何か

function refirectAfterTransmit() { 
    window.location.href = "/new_page.html"; 
} 

var img = document.createElement("img"); 
img.addEventListener("load", refirectAfterTransmit); 
img.src = "server.php?param1=cookiedata"; 
document.appendChild(img) 

は、このことができますなら、私を知ってみましょう!

編集:あなたがロードされる「画像」を待つことをお勧めします Wait for image to be loaded before going on

:コメント

+0

'.setAttribute(" onload "、refirectAfterTransmit);'これは有効なjavascriptではありません! –

+0

したがって、私は "これのようなもの"と言いました。そこには擬似コードのものがいっぱいあります。 – jakee

+0

フェアー...私は答えとして擬似コードを使うことは考えていませんでした:p –

0

に感謝Jaromanda Xはこれを見て持っています。要求が送信されたと確信しています。

<body> 

<script type="text/javascript"> 

**** 
light transaction about cookie 
**** 

function loadSprite(src, callback) { 
    var sprite = new Image(); 
    sprite.onload = callback; 
    sprite.src = src; 
} 


loadSprite('server.php?param1=cookiedata', function() { 
    location.href = "new_page.html"; 
}); 



</script> 

</body> 
関連する問題