我正在尝试从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,直到我能做更多。
答案 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将使用根据$_POST
和application/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);