2017-01-31 26 views
0

我正在開始使用ajax。有人可以幫我理解爲什麼ajax send()不更新地址欄嗎?連接起作用,但總是打印「沒有變量!」 PS:請記住,我不想使用JQuery。ajax send()不更新地址欄

TEST.HTM

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Title</title> 
</head> 
<body> 
<div id="posts"></div> 

<script type="text/javascript"> 
    var addressVariables = "sendvariable=test"; 
    var hr = new XMLHttpRequest(); 
    var url = "phpAjax.php"; 
    hr.open("GET", url, true); 
    hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    hr.onreadystatechange = function() { 
     if (hr.readyState == 4 && hr.status == 200) { 
      var returnData = hr.responseText; 
      document.getElementById("centreSection").innerHTML = returnData; 
     } 
    }; 
    hr.send(addressVariables); 
</script> 

<section id="centreSection"></section> 
</body> 

</html> 

phpAjax.php

<?php 
if (isset($_GET['sendvariable'])){ 
    $testVar = $_GET['sendvariable']; 
    echo "Ajax rocks !"; 
    echo $testVar; 
} else { 
    echo "There is no variable!"; 
} 

回答

0

您可以瞭解在阿賈克斯的文章:http://www.w3schools.com/js/js_ajax_http_send.asp它會幫助你學習如何發送請求到服務器 現在你可以嘗試鱈魚e下面(test.htm):

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Title</title> 
</head> 
<body> 
<div id="posts"></div> 

<script type="text/javascript"> 
    var addressVariables = "sendvariable=test"; 
    var hr = new XMLHttpRequest(); 
    var url = "phpAjax.php"+'?'+addressVariables; 
    hr.open("GET", url, true); 
    hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    hr.onreadystatechange = function() { 
     if (hr.readyState == 4 && hr.status == 200) { 
      var returnData = hr.responseText; 
      document.getElementById("centreSection").innerHTML = returnData; 
     } 
    }; 
    hr.send(); 
</script> 

<section id="centreSection"></section> 
</body> 
</html> 
+0

CSS.cutter非常感謝它的工作原理。 – Swartz

0

這裏的問題很簡單,GET請求的send()函數沒有參數。這些參數僅適用於POST請求。

爲了將GET變量傳遞給PHP腳本,您必須將它們附加到URL,就像您在瀏覽器中按照css.cutter的示例一樣。

XMLHttpRequest的規範可以在這裏找到:https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/send這就解釋了很多!

0

問題與您的代碼是,您正在使用POST功能,而不是GET方法功能。

GET方法你在url本身發送數據。你正在做的是將其作爲POST方法風格發送。

您的腳本應該有如下:

<script type="text/javascript"> 

    var addressVariables = "sendvariable=test"; 

    var hr = new XMLHttpRequest(); 

    var url = "phpAjax.php?"+addressVariables; 

    hr.open("GET", url, true); 

    hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 

    hr.onreadystatechange = function() { 

    if (hr.readyState == 4 && hr.status == 200) { 

      var returnData = hr.responseText; 

      document.getElementById("centreSection").innerHTML = returnData; 
    } 
    }; 

    hr.send(); 

</script>