如何解决xmlhttprequest未发布到php文件
我正在尝试通过javascript向本地托管的php文件发出发布请求,但似乎php文件未接收到数据或未显示。 我尝试了各种方式使用vardump print_r $ _post $ _request raw_http_data进行打印,但似乎无济于事。
代码有什么问题? 网址有问题吗?
这是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);
,并看到了控制台日志消息“是的,它起作用了!”
一切正常。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。