【问题标题】:Why my php backend don't have data of json post?为什么我的 php 后端没有 json post 的数据?
【发布时间】:2016-08-13 02:36:42
【问题描述】:

我有一个 json 数组:

[Object { path="/usr/share/htvcenter/storage/Windows",  imgid="14698227485587"}, Object { path="/usr/share/htvcenter/storage/WindowsServer",  imgid="14701636866762"}]

我用 ajax 发送这个数组:

$.ajax({
          type: 'POST',
          url: urlstring,
          contentType: "application/json",
          data: JSON.stringify(parameters),

          success: function(data){
                $('.lead').hide();
                blackalert('Removed successfully!');
          }
    });

我在 firebug 中看到这个用于 post 发送:

但服务器回答是空的 $_POST:

服务器的代码是:

if (isset($_GET['treeaction']) && $_GET['treeaction'] == 'remove') {
        echo 'here';
        var_dump($_POST); die();
}

我做错了什么?

【问题讨论】:

  • 您想获得$_POST,但在您的代码中它是$_GET,这是哪个?
  • var_dump($_POST);所以主要数据在后。在获取中,我正在检查删除操作,获取进入 POST 发送的 url

标签: php jquery json ajax post


【解决方案1】:

当您发送POST 请求时,您无需将内容类型设置为application/json。通过这样做,这不再是一个常规的 POST 请求(带有表单值),而是一个有效负载请求。

要从服务器上的有效负载请求中获取数据,您可以使用:

$content = file_get_contents("php://input");
var_dump(json_decode($content)); // In case the content is a json string.

如果要发送常规请求,可以使用:

$.ajax({
      type: 'POST',
      ....
      data: {'data' : parameters},
      success: function(data){
        alert(data);
      }
});

没有contentType 和没有JSON.stringify
这样就可以用$_POST['data']获取数据了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-30
    • 1970-01-01
    • 2016-11-11
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    • 2011-07-10
    • 2017-07-22
    相关资源
    最近更新 更多