无法将数据从 JavaScript 发送到 PHP

问题描述

我正在尝试制作一个简单的 JavaScript 游戏,作为用户,我会得到一个分数。 我想将此分数发送到 PHP 服务器,但就我而言,我无法在 PHP 文件获取此数据。

这里是我的 JavaScript 代码

var obj = {
  "note": 0,};
obj.note = score;
console.log(obj.note)
var data,xml,txt = "",mydata;
data = JSON.stringify(obj.note);
xml = new XMLHttpRequest();
xml.onreadystatechange = function() {
  if (this.readystate == 4 && this.status == 200) {
    mydata = JSON.parse(this.responseText);
    for (x in mydata) {
      txt += mydata[x];
    }
    // document.getElementsByClassName("pEl").innerHTML = txt;
  }
};
xml.open("POST","getnote.PHP",true);
console.log("true");
xml.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xml.send("x=" + data);

这里是我的 PHP 代码

<?PHP
  // Takes raw data from the request
  $json = file_get_contents('application/x-www-form-urlencoded');

  // Converts it into a PHP object
  $data = json_decode($json);
  echo $data
?>

解决方法

许多人试图帮助您,您使用了您链接的有效示例,无论如何仍然使用错误的代码,您无缘无故地修改了代码,您所要做的就是遵循您链接的 GeeksForGeeks 页面的建议。

>

简短 当您尝试访问 php://input 流时,您无法使用任何您想要的东西(您使用了 application/x-www-form-urlencoded,这是错误的,我什至不知道为什么?)

工作的缩小样本

test.html

<script>
    let obj = {
        "note": 123,"foo": "bar"
    };
    let data,xml;
    data = JSON.stringify(obj);
    xml = new XMLHttpRequest();
    xml.open("POST","getnote.php",true);
    xml.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    xml.send(data);
</script>

getnote.php

<?php
// Takes raw data from the request
$json = file_get_contents('php://input');

// Converts it into a PHP object
$data = json_decode($json,true);

// print whole array decoded from JSON object
print_r($data);

// print single node of the array
echo "The sent note is: {$data['note']}";
echo "The sent foo is: {$data['foo']}";
// etc.

请再读一遍the article you linked,同时仔细阅读the question linked by El Vanja以识别你犯了什么错误。

注意:这应该只是一个评论,可能会被标记为删除,无论如何我不知道如果你不想阅读解决问题的简单评论,我们还能做什么并为您详细描述您的问题。