javascript邮件请求服务器没有看到

时间:2017-12-04 18:12:30

标签: javascript php

我正在尝试从javascript到php进行简单的发布,并且我没有获取要传输的数据。我在Ubuntu上使用Apache2。如果我在Mozilla中运行php代码,它会执行我所要求的,但是当从javascript调用php时,似乎没有将信息提供给服务器端的php。我试图简化代码以专注于post函数。这是html代码:

<!doctype html>
<html>
<head>
<title>Post Test </title>
</head>
<body>

<p id="demo"></p>

<script>
    var http = new XMLHttpRequest();
    var url = "post_test.php";
    var file_data = "text string";
    http.open("POST", url, true);
    http.onreadystatechange = function() {
        if(http.readyState == 4 && http.status == 200){
          document.getElementById('demo').innerHTML=this.responseText
        };
    }
http.send(file_data);
</script>
</body>
</html>

这是php:

<?php
var_dump(isset($_POST['file_data']));
?>

我在屏幕上看到一条bool(false)消息。 我检查了文件访问权限。这两个文件都设置为rwx。 我正在尝试学习HTML,JavaScript和PHP。我想推迟jQuery,直到我能做更多。

2 个答案:

答案 0 :(得分:1)

您应该在数据中指明它应该包含哪个字段名称。在你的情况下,它是file_data。

var myData = "file_data=foo";
http.send(myData);

然后你的PHP

<?php
   var_dump(isset($_POST['file_data']));
?>

答案 1 :(得分:1)

您正在向PHP发送一串纯文本。您在发送到服务器的字符串中没有提到“file_data”,那么您希望PHP在$_POST中获取该键的名称在哪里? PHP在服务器上运行,它看不到你的JS变量名。

PHP将使用根据$_POSTapplication/x-www-form-urlencoded数据格式格式化的数据填充multipart/form-data

您可以像这样构建application/x-www-form-urlencoded

http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
var data = "file_data=" + encodeURIComponent(file_data);
http.send(data);