6

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

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 的变量都有值,控制台也会记录一个空数组。我在帖子上做错了什么?

4

2 回答 2

6

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

希望这可以帮助。

于 2012-04-19T05:19:57.310 回答
1

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

这是一个小错误,但也很容易被忽视。很容易假设错误出现在代码中而不是 URL 中,特别是在返回数组时 - 所以有人可能认为 URL 是正确的。

于 2019-10-08T19:21:23.923 回答