无法在ajax请求中获取php中的$ _POST值

时间:2017-12-15 11:11:12

标签: javascript php html ajax

这是我的 index.html

<script>
    var xml = new XMLHttpRequest();
    xml.onreadystatechange = function(){
        if (xml.readyState === 4 && xml.status === 200) {
            console.log(xml.responseText);
        }
    }
    xml.open("POST", "ajax.php", true);
    var data = new FormData();
    data.append("name","Sahan");
    xml.send(data);
</script>

这是我的 ajax.php

<?php
echo "Hello " . $_POST["name"];
?>

当我在本地主机上运行此结果时

  


      注意:未定义索引: C:\ xampp \ htdocs \ chat \ ajax.php 2 行上的名称
      你好

但是当我使用 JQuery 它正在正常工作......

我的问题是如何在没有JQuery的情况下使用JavaScript发送ajax ..?

2 个答案:

答案 0 :(得分:6)

当您将ajax与发布数据一起使用时,您必须传递正确的标头信息以及请求

<script>
    var xml = new XMLHttpRequest();
    xml.onreadystatechange = function(){
        if (xml.readyState === 4 && xml.status === 200) {
            console.log(xml.responseText);
        }
    }
    xml.open("POST", "ajax.php", true);
    //Send the proper header information along with the request
    xml.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

    /*var data = new FormData();
    data.append("name","Stackoverflow");*/
    xml.send("name=Stackoverflow");
</script>

答案 1 :(得分:2)

您可以在javascript函数中使用此代码。

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById("demo").innerHTML = this.responseText;
    }
  };
xhttp.open("POST", "ajax_test.php", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("fname=Stack&lname=Overflow");

了解更多详情Ajax at w3schools