网站搜索

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 是正确的。