[英]xmlhttprequest not being posted to php file
我正在尝试通过 javascript 向本地托管的 php 文件发出发布请求,但 php 文件似乎未接收数据或未显示。 我尝试了各种方法来使用 vardump print_r $_post $_request raw_http_data 进行打印,但似乎没有任何效果。
代码有什么问题? url 有问题吗?
这是 javascript 文件:
const rightswipe = (n) =>{
var foo = "me";
var bar = "ft";
var xhr = new XMLHttpRequest();
xhr.addEventListener("readystatechange", function()
{
if(this.readyState === 4)
{
if(this.status==200 || this.status==201)
{
//let newData = JSON.parse(this.responseText);
//console.log(newData);
}
else{
alert("invalid link");
}
}
});
xhr.open("POST", "like.php" , true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send("to_user="+foo+"&from_user="+bar);
};
like.php 是同一文件夹中的一个文件:
if (array_key_exists('foo', $_POST) && array_key_exists('bar', $_POST)) {
$foo = $_POST['foo'];
$bar = ($_POST['bar']);
// do stuff with params
echo 'Yes, it works!';
} else {
echo 'Invalid parameters!';
}
$_post 和 $_request 也是空的; 和 var_dump($_server["REQUEST_METHOD"]) 返回 "GET" 并在本地托管此站点 xampp 即 apache 和 mysql
我已经设置了一个测试,你的代码工作正常。 我只能看到一个问题,那就是您发布了“to_user”和“from_user”参数,但在您的 PHP 中您检查了“foo”和“bar”键。 因此在我的测试中我得到“无效参数”。 按预期返回。
注意:目前您的 PHP 正在返回文本,因此如果您取消注释 JSON.parse 行,您可能会收到 JavaScript 错误。 确保在 PHP 中对您的响应进行 json_encode。
我不确定您显示请求方法的测试是“GET”,但怀疑它不是有效测试,因为您清楚地发送了 POST 请求。
更新以下讨论:
我安装了 Windows 10 中提到的相同 XAMPP 版本并设置了基本文件,但仍然无法重现问题。
C:\xampp\htdocs\rightswipe.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script src="rightswipe.js"></script>
</body>
</html>
C:\xampp\htdocs\rightswipe.js
const rightswipe = (n) =>{
var foo = "me";
var bar = "ft";
var xhr = new XMLHttpRequest();
xhr.addEventListener("readystatechange", function()
{
if(this.readyState === 4)
{
if(this.status==200 || this.status==201)
{
let newData = JSON.parse(this.responseText);
console.log(newData);
}
else{
alert("invalid link");
}
}
});
xhr.open("POST", "like.php" , true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send("to_user="+foo+"&from_user="+bar);
};
C:\xampp\htdocs\like.php
<?php
if (array_key_exists('to_user', $_POST) && array_key_exists('from_user', $_POST)) {
$foo = $_POST['to_user'];
$bar = ($_POST['from_user']);
// do stuff with params
echo json_encode('Yes, it works!');
} else {
echo json_encode('Invalid parameters!');
}
在 Chrome 中转到 http://localhost/rightswipe.html 并打开开发者工具 (F12)
在控制台选项卡中,我输入rightswipe(1);
并看到控制台日志消息“是的,它有效!”
一切都按预期工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.