2013-03-19 36 views
0

好的這裏是我得到的。我有這個投票系統,你點擊一個按鈕,它使用ajaxrequest.open()將文本字段發送到php腳本。在將數據發送到php腳本後,我希望它加載一個新頁面。下面是我有(精簡版)ajaxrequest.open越來越取消window.location.href

var mytext = document.getElementById('textfield').value; 
ajaxRequest.open("GET", "vote.php?mytext="+mytext, true); 
ajaxRequest.send(null); 
window.location.href = "thanksforvoting.htm"; 

所以它發送的文本字段vote.php - 只有當我拿出window.location.href線,工作。只要該線路在,它不會做ajaxrequest。我假設也許它取消了,因爲它正在加載另一個頁面。

我想也許我可以只使用一個PHP的'頭'命令,但似乎並沒有工作。它沒有把我帶到頁面。上面的腳本把我帶到了頁面,但它沒有到達php腳本。如果我拿出window.location.href php腳本運行,但它顯然不會帶我到頁面。

+2

您可以等待AJAX​​完成,然後更改窗口位置。 – 2013-03-19 07:46:06

+0

告訴標題錯誤。 – itachi 2013-03-19 07:48:12

+0

您也可以發表投票並加載新頁面,這將是最直接的事情 – James 2013-03-19 08:40:47

回答

1

由於ajax請求是異步進行的,所以您需要使用回調,否則重定向將在請求完成之前發生。你的情況,這將是這樣的:

var mytext = document.getElementById('textfield').value; 
ajaxRequest.onreadystatechange = callback; 
ajaxRequest.open("GET", "vote.php?mytext=" + encodeURIComponent(mytext), true); 
ajaxRequest.send(null); 

function callback() { 
    if (ajaxRequest.readyState === 4 && ajaxRequest.status === 200) { 
     window.location.href = "thanksforvoting.htm"; 
    } 
} 

MDN對阿賈克斯的好getting started guide

+0

這似乎並不適用於我。我對javascript/ajax很陌生,這是我需要工作的唯一東西,所以我可能不會學到太多東西。我可以將回調函數放在同一個