Php XMLHttprequest发送一个空post

Php XMLHttprequest发送一个空post,php,javascript,ajax,xmlhttprequest,Php,Javascript,Ajax,Xmlhttprequest,我正在使用以下代码发送请求: var ajaxHandler = new XMLHttpRequest(); ajaxHandler.onreadystatechange = function() { if(ajaxHandler.readyState == 4) { console.log(ajaxHandler.responseText); } } ajaxHandler.open("POST", "filterCards", true); ajaxHand

我正在使用以下代码发送请求:

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);

但是,即使category和tag的变量都有值,控制台也会记录一个空数组。我的帖子有什么不对吗?

在发送呼叫之前添加
setRequestHeader

ajaxHandler.setRequestHeader("Content-type","application/x-www-form-urlencoded");
ajaxHandler.send("category="+category+"&tag="+tag);
替换:

   if(ajaxHandler.readyState == 4)
   {
      console.log(ajaxHandler.responseText);
   }

希望这有帮助。

的答案是正确的,但是如果您仍然收到一个空数组,请回想一下您是否在服务器配置中隐藏了文件扩展名。如果是,则对“file.extension”的请求将重定向到“file”,并且POST数据将丢失

这是一个很小的错误,但也容易被忽视。很容易假设错误在代码中,而不是在URL中,特别是当数组返回时——因此人们可能认为URL是正确的

   if(ajaxHandler.readyState == 4 && ajaxHandler.status==200)
   {
      console.log(ajaxHandler.responseText);
   }