使用vanilla javascript将数据发布到php并将其取回

使用vanilla javascript将数据发布到php并将其取回,javascript,php,Javascript,Php,我尝试使用javascript将变量发送到php,并尝试接收并警告该变量。但是,$\u POST['data']没有获得我传递的数据,$obj始终为空 如果我只是回显“一些文本”它会提醒您 以下是我的javascript代码: getMessageType('some data'); //function call function getMessageType(str) { data = {'key': str}; var xhr = new XMLHttpRequest()

我尝试使用javascript将变量发送到php,并尝试接收并警告该变量。但是,
$\u POST['data']
没有获得我传递的数据,
$obj
始终为空

如果我只是
回显“一些文本”它会提醒您

以下是我的javascript代码:

getMessageType('some data'); //function call

function getMessageType(str)
{
    data = {'key': str};
    var xhr = new XMLHttpRequest();
    var url = "test.php";
    xhr.open('POST', url, true);
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
    console.log(data); //Object {key: "some data"}
    xhr.send(data);

    xhr.onreadystatechange = function () {
    if (xhr.readyState === 4 && xhr.status === 200) {
          console.log(xhr.responseText);
        }
    };
}
以下是我的PHP代码:

<?php       
$obj = $_POST['key'];
echo $obj;

您发布的数据的内容类型为
application/x-www-form-urlencoded

因此,您的数据必须进行格式编码

data = "key="+str;

如果帖子信息包含任何“表单数据”,您可以在浏览器中检查此项。如果您需要传递内容类型为的JSON数据(对象),则需要将其转换为文本格式:

  var params = "";
    for (key in data) {
        params += encodeURIComponent(key)+"="+encodeURIComponent(data[key])+"&";
    }
然后把它寄出去

xhr.send(params);

它是一个字符串
some data
,我在调用
getMessageType
函数时传递它。您可以在代码顶部看到。您没有提供任何类型的名为
data
的键,因此如果您从未设置该键,则无法通过该键检索值。可能字符串在POST正文中而不是键/值对中?即使设置了键,我仍然会收到空白警报。请改用
console.log()
。这是您的问题。添加
console.log(数据)发送之前,确保已填充。