Javascript xmlhttprequest未发布到php文件
我试图通过javascript向本地托管的php文件发出post请求,但php文件似乎没有接收到数据或没有显示。 我尝试了各种方法来打印vardump print\u r$\u post$\u request raw\u http\u数据,但似乎没有任何效果 代码有什么问题? url有问题吗 这是javascript文件:Javascript xmlhttprequest未发布到php文件,javascript,php,apache,xmlhttprequest,http-post,Javascript,Php,Apache,Xmlhttprequest,Http Post,我试图通过javascript向本地托管的php文件发出post请求,但php文件似乎没有接收到数据或没有显示。 我尝试了各种方法来打印vardump print\u r$\u post$\u request raw\u http\u数据,但似乎没有任何效果 代码有什么问题? url有问题吗 这是javascript文件: const rightswipe = (n) =>{ var foo = "me"; var bar = "ft"
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!';
}
另外$\u post和$\u请求也是空的;
而var_dump($_server[“REQUEST_METHOD”])返回“GET”
我用xampp ie apache和mysql在本地托管这个站点,我已经设置了一个测试,您的代码运行良好。我只看到一个问题,那就是您发布了“to_user”和“from_user”参数,但在PHP中检查了“foo”和“bar”键。因此,在我的测试中,我得到了预期返回的“无效参数” 注意:当前您的PHP正在返回文本,因此如果要取消对JSON.parse行的注释,可能会出现JavaScript错误。确保用PHP对您的响应进行json_编码 我不确定您的测试显示请求方法是“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\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!');
}
我已经设置了一个测试,您的代码运行良好。我只看到一个问题,那就是您发布了“to_user”和“from_user”参数,但在PHP中检查了“foo”和“bar”键。因此,在我的测试中,我得到了预期返回的“无效参数”
注意:当前您的PHP正在返回文本,因此如果要取消对JSON.parse行的注释,可能会出现JavaScript错误。确保用PHP对您的响应进行json_编码
我不确定您的测试显示请求方法是“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\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!');
}
您是否检查了浏览器开发人员工具网络面板中的请求和响应?也许rightswipe
永远不会出现called@JaromandaXrightswipe还包含其他css更改,我在这里没有包括这些更改,因为它们是不相关的。这些css更改正在发生,因此我可以向您保证正在调用rightswipe。@DamianDziaduch我在网络部分检查了它,请求方法显示POST,并且没有发出任何类型的错误输入:xhr.send(“to_user=“+foo+”&from_user=“+bar”)
您的键被称为给_user
和从_user
非foo
和bar
(这是您正在寻找的:$foo=$\u POST['foo'];
)您是否检查了浏览器开发人员工具网络面板中的请求和响应?也许rightswipe
永远不会出现called@JaromandaXrightswipe还包含其他css更改,我在这里没有包括这些更改,因为它们是不相关的。这些css更改正在发生,因此我可以向您保证正在调用rightswipe。@DamianDziaduch我在网络部分检查了它,请求方法显示POST,并且没有发出任何类型的错误输入:xhr.send(“to_user=“+foo+”&from_user=“+bar”)
您的键被称为到用户
和从用户
到非foo
和bar
(这是您正在寻找的:$foo=$\uPost['foo'];
)谢谢@mark。我修复了from_user和to_user,但仍然不起作用;它仍然给出“无效参数!”。另外,vardump$\u POST和$\u REQUEST是空的。这告诉我,您的代码中还存在一些我们在这里看不到的问题,因为正如我所说的,我用提供的代码设置了一个测试,一旦我纠正了提到的两个问题,它就可以正常工作。在like.php中是否有更多我们没有看到的代码?您将vardump放在哪里,如何确认它们是空的?不,这就像.php包含的内容一样。我暂时把vardump放到confim$\u post是空的。另外,当我尝试创建表单时,$\u post显示结果当您测试此项时,您是在HTML上单击按钮或其他用户操作,还是直接调用rightswipe函数?如果您使用的是单击或类似操作,请尝试直接调用该函数:打开开发人员工具,并在控制台选项卡中输入rightswipe(1)代码>。在网络选项卡中,找到请求并检查调用的完整url是否正确。检查请求有效负载,确保它已发送给\u用户和从\u用户发送。你已经确认它是邮寄的。最后查看响应并共享响应负载。在执行此操作之前,请删除PHP代码中的任何转储。我正在单击一个按钮调用rightswipe。我试着像你说的那样用右击打电话,但还是不行。另外,我注意到在我发送请求的页面的网络面板中,其类型显示为xhr,请求方法显示为post。但是在接收页面上,类型是document,请求方法是get。我还将php.ini中的enable_post_data_读取从off更改为on,但没有任何帮助。谢谢@mark。我修复了from_user和to_user,但仍然不起作用;它仍然给出“无效参数!”。另外,vardump$\u POST和$\u REQUEST是空的。这告诉我,您的代码中还存在一些我们在这里看不到的问题,因为正如我所说的,我用提供的代码设置了一个测试,一旦我纠正了提到的两个问题,它就可以正常工作。在like.php中是否有更多我们没有看到的代码?你把vardump放在哪里?你怎么确认