ajax send()不更新地址栏

时间:2017-01-31 02:35:26

标签: javascript php ajax

我正在使用ajax迈出第一步。有人可以帮我理解为什么ajax send()不更新地址栏?连接工作,但它始终打印“没有变量!” PS:请记住,我不想使用JQuery。

  

TEST.HTM

Multiple markers at this line
    - Type mismatch: cannot convert from T to K
    - The method toMap(Function<? super T,? extends K>, Function<? super T,? extends U>) 
      in the type Collectors is not applicable for the arguments ((<no type> k) -> {}, Boolean)
  

phpAjax.php

<!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>

3 个答案:

答案 0 :(得分:0)

您可以在http://www.w3schools.com/js/js_ajax_http_send.asp阅读有关ajax的文章,它将帮助您了解如何向服务器发送请求 现在您可以尝试下面的代码(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>

答案 1 :(得分:0)

这里的问题非常简单,使用GET请求send()函数没有参数。这些参数仅适用于POST请求。

为了将GET变量传递给PHP脚本,您必须像在css.cutter的示例中一样将它们附加到URL中。

XMLHttpRequest的规范可以在这里找到:https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/send,这解释了很多!

答案 2 :(得分:0)

您的代码问题在于您使用 POST 而不是 GET 方法。

GET 方法中,您可以在网址中发送数据。而您正在做的是将其作为 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>