php - XMLHttprequest 发送了一个空的 POST 请求
我正在使用以下代码发送请求:
var ajaxHandler = new XMLHttpRequest();
ajaxHandler.onreadystatechange = function()
{
if(ajaxHandler.readyState == 4)
{
console.log(ajaxHandler.responseText);
}
}
ajaxHandler.open("POST", "filterCards", true);
ajaxHandler.send("category="+category+"&tag="+tag);
在 PHP 端,我有这个:
var_dump($_POST);
然而,即使类别和标签这两个变量都有值,控制台仍然记录了一个空数组。我在发布内容时哪里做错了?
答案#1
在调用 send 之前添加 setRequestHeader:
ajaxHandler.setRequestHeader("Content-type","application/x-www-form-urlencoded");
ajaxHandler.send("category="+category+"&tag="+tag);
替换 :
if(ajaxHandler.readyState == 4)
{
console.log(ajaxHandler.responseText);
}
与
if(ajaxHandler.readyState == 4 && ajaxHandler.status==200)
{
console.log(ajaxHandler.responseText);
}
希望这能帮到你。
答案#2
web-nomad 的回答是正确的,但如果你仍然收到一个空数组,请回想一下是否在服务器配置中隐藏了文件扩展名。如果是这样,那么对“file.extension”的请求将被重定向到“file”,并且 POST 数据会丢失。
这是一个容易犯的小错误,但也很容易被忽视。人们很容易认为错误在代码中而不是在 URL 中,尤其是当数组能够返回时——所以有人可能会认为 URL 是正确的。
