jQuery AJAX/POST 不向 PHP 发送数据

2022-08-30 14:16:37

所以我有这个问题已经有一段时间了,我知道这个话题有无数的问题,相信我,我尝试了所有可能的解决方案,但仍然不起作用。

这是最简单的例子,在我的情况下不起作用

jQuery:

$.ajax({
    url: "ajax/add-user.php",
    type: "POST",
    data: {name: 'John'},
    success: function(data){
        console.log(data);
    }
});

菲律宾比索

echo json_encode($_POST);

就是这样。我总是得到一个空数组作为响应。我尝试了,但响应始终为空。我没有得到任何错误,只是一个空数组,当我应该得到发布的值。serialize()data:

例如,如果在php中,我尝试使用一些硬编码的变量,我会得到它们,但是和不起作用。echo$_POST$_GET

如何识别问题的任何解决方案或方法?

谢谢。

编辑/解决方案

好吧,所以问题似乎出在.htaccess上,它重写了url并删除了扩展名。在网络选项卡中,请求确实被永久移动。从ajax url中删除.php扩展:解决了它。谢谢你,很抱歉浪费时间。干杯


答案 1

您需要在 ajax 调用中将数据类型设置为 json。

JQUERY 代码:

$.ajax({
  url: "ajax/add-user.php",
  type: "POST",
  dataType:'json',
  data: {name: 'John'},
  success: function(data){
      console.log(data);
  }
});

同时验证你的后端代码(php),它是否可以接受数据?json

如果没有,请按如下方式配置标头:

PHP 代码:

/**
 * Send as JSON
 */
header("Content-Type: application/json", true);

快乐编码 :


答案 2

我最近遇到了这个问题,但由于其他原因:

  1. 我的 POST 数据被重定向为 301
  2. 我的服务器请求是 GET
  3. 我没有收到我的 POST 数据

我的原因 - 我在服务器上有一个网址注册为:

http://mywebsite.com/folder/path/to/service/

但我的客户打电话给:

http://mywebsite.com/folder/path/to/service

服务器上的 .htaccess 将此内容读取为 301 GET 重定向到正确的 URL 并删除了 POST 数据。简单的解决方案是仔细检查url路径

@C.Ovidiu,@MarcB - 你们俩都为我节省了大量的调试时间!


推荐