2014-10-11 46 views
-1

好吧,所以我想讓PHP將用戶數據保存到XML中,然後將用戶轉發到主頁上..但是當JavaScript運行時,它不會在最後抓取回顯腳本以及header();AJAX沒有通過javascript呼應

的PHP我願重申

echo "<b>Congratulations registration was Successful.<br /> Your Customer ID is: $id4</b>"; 
      echo "<br/>"; 
      echo "redirected automatically in 7 seconds"; 
      header("Refresh:7; buyonline.htm", true, 303); 
      $doc->save("data/customer.xml"); 
     } 

以及JavaScript函數

var firstname = document.getElementById("firstName").value; 
      var lastname = document.getElementById("lastName").value; 
      var email = document.getElementById("email").value; 
      var password = document.getElementById("password").value; 
      var password2 = document.getElementById("password2").value; 
      var number = document.getElementById("pNumber").value; 
      var type = ""; 
      var input = document.getElementsByTagName("input"); 
       xHRObject.open("GET", "testregristation.php?firstName=" + firstname + "&lastName=" + lastname + "&email=" + email + "&password="+password+"&pNumber="+number, true); 
       xHRObject.onreadystatechange = function() { 
        if (xHRObject.readyState == 4 && xHRObject.status == 200) 
        { 
         document.getElementById('information').innerHTML = xHRObject.responseText; 
        } 
       xHRObject.send(null); 

顯然,這些都是小片段,但我不明白爲什麼它不會發送到屏幕的響應它顯示了響應在「螢火蟲」..我的PHP也做了電子郵件檢查,以確保它沒有被使用,並且完美的回聲。

+0

'xHRObject.status == 200' - 你不必在你的響應200個狀態碼:'標題(「刷新:7; buyonline.htm「,true,303);'它是303 - 你永遠不會輸入javascript的部分,你實際上設置了innerhtml,更好地使用console.log來進行調試 - 還*確保* PHP錯誤記錄正確設置,以防萬一你得到一些標題警告等 – hakre 2014-10-11 13:05:38

+0

好吧我把它改爲200 ...它現在彈出與回聲謝謝你...但我也有頭問題不發送用戶?buyonline.htm – 2014-10-11 13:08:26

+0

頭文件根本沒有發送任何用戶,所以它不應該,你的意思是說用戶正在重定向?我想是這樣,所以讓我把它與重複的文件關聯起來(瞭解現在正確的錯字材料,你說) – hakre 2014-10-11 13:20:17

回答

1

我還沒有真正測試過你的代碼,以確保我要說的是100%正確。 我從來沒有試圖在ajax響應中以這種方式使用標題。 但是,我想如果你想重定向用戶只是使用JavaScript的。

PHP:

echo "<b>Congratulations registration was Successful.<br /> Your Customer ID is: $id4</b>"; 
echo "<br/>"; 
echo "redirected automatically in 7 seconds"; 
$doc->save("data/customer.xml"); 

的Javascript:

if (xHRObject.readyState == 4 && xHRObject.status == 200) 
{ 
    document.getElementById('information').innerHTML = xHRObject.responseText; 
    setTimeout(function() 
    { 
     window.location.pathname = "/buyonline.htm"; 
    }, 7000 /* 7 seconds */); 
} 

編輯: 現在,因爲你使用JavaScript重定向的頁面,你也可以倒計時秒:

PHP:

echo "<b>Congratulations registration was Successful.<br /> Your Customer ID is: $id4</b>"; 
echo "<br/>"; 
echo "redirected automatically in <span id="redirect-countdown">7 seconds</span>"; 
$doc->save("data/customer.xml"); 

的Javascript:

if (xHRObject.readyState == 4 && xHRObject.status == 200) 
{ 
    document.getElementById('information').innerHTML = xHRObject.responseText; 

    var countdown = document.getElementById("redirect-countdown"); 

    var count = 8; 
    var interval = setInterval(function() 
    { 
     count--; 

     countdown.innerText = count + " second" + (count > 1 ? "s" : ""); 

     if(count <= 0) 
     { 
      clearInterval(interval); // Kill the interval timer 
      window.location.pathname = "/buyonline.htm"; // Redirect to that page 
     } 

    }, 1000); 
} 
+0

我從來沒有改變過一個使用JavaScript的網頁,但這是行不通的...我沒有複製它的單詞只是一個字incase我本來是想改變一個默認t值。 – 2014-10-11 13:10:26

+0

我剛剛給出了主要想法,我沒有測試過這個代碼。但請注意,window.location.href是完整的地址。嘗試使用路徑名代替:window.location.pathname =「/buyonline.htm」; – Ido 2014-10-11 13:12:48