【发布时间】:2014-04-01 16:04:02
【问题描述】:
所以我有这个问题有一段时间了,我知道关于这个主题有无数的问题,相信我,我尝试了所有可能的解决方案,但仍然不起作用。
这是最简单的示例,在我的情况下不起作用
jQuery:
$.ajax({
url: "ajax/add-user.php",
type: "POST",
data: {name: 'John'},
success: function(data){
console.log(data);
}
});
PHP
echo json_encode($_POST);
就是这样。
我总是返回一个空数组作为响应。我尝试使用serialize() 获取data:,但响应始终为空。当我应该获取发布的值时,我没有收到任何错误,只是一个空数组。
如果,例如,在 php 中我尝试 echo 一些硬编码的变量,我会得到它们,但 $_POST 和 $_GET 不起作用。
我可以如何识别问题的任何解决方案或方法?
谢谢。
编辑/解决方案
好的,看来问题出在 .htaccess 上,它重写了 url 并删除了扩展名。在网络选项卡中,请求确实被永久移动了。从 ajax url 中删除 .php 扩展名:解决了。谢谢你,很抱歉浪费了时间。干杯
【问题讨论】:
-
试试
echo $_SERVER['REQUEST_METHOD']。如果您收到 POST 以外的内容,则您的原始帖子可能会被重定向,而您实际上是在执行 GET,这就是 $_POST 为空的原因。 -
你设置了 dataType: 吗?
-
所以是的...某些原因导致您的 POST 请求获得 http
301重定向,从而导致您的脚本改为通过 GET 获取。 -
好的,看来问题出在 .htaccess 上,它重写了 url 并删除了扩展名。在网络选项卡中,请求确实被永久移动了。从 ajax url 中删除 .php 扩展名:解决了。谢谢你,很抱歉浪费了时间。干杯
-
@C.Ovidiu:请将最终解决方案添加为自我回答并将其标记为已接受,以便未来的搜索者受益。