【问题标题】:Can't send data from JavaScript to PHP [duplicate]无法将数据从 JavaScript 发送到 PHP [重复]
【发布时间】:2021-07-15 02:43:16
【问题描述】:

我正在尝试制作一个简单的 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
?>

【问题讨论】:

  • 检查你的控制台,你会看到错误(如果没有,检查网络标签)
  • 控制台未检测到错误
  • 检查网络控制台,你应该会看到请求
  • 你的意思是file_get_contents("php://input");
  • 这能回答你的问题吗? Receive JSON POST with PHP

标签: javascript php xmlhttprequest


【解决方案1】:

许多人试图帮助您,您使用了链接的有效示例,但仍然使用错误的代码,您无缘无故地修改了代码,您所要做的就是遵循您链接的 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,以确认您犯了什么错误。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-17
    • 2021-03-05
    • 1970-01-01
    • 1970-01-01
    • 2015-11-03
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    相关资源
    最近更新 更多