【问题标题】:angularJS - POST array after JSON.stringify()angularJS - JSON.stringify() 之后的 POST 数组
【发布时间】:2015-05-08 06:24:48
【问题描述】:

我想POST 3 参数到我的 PHP Web 服务。其中一个是数组,所以我先使用JSON.stringify(),然后将其添加为参数。问题是,PHP 没有接收到 stringify 的参数。

我的数组是通过获取对象中每个元素的 ID 创建的。

将其转换为字符串:

var cid = JSON.stringify(cids);

cid 的控制台输出:

["1","2","3"]

还有我的$http.post 电话:

var dataObj = {
    wid: wid,
    type: type,
    cid: cid
};

$http.post("my.php", dataObj);

据我了解,数组被转换成一个字符串,它必须像其他字符串一样被发布,但是当我回显$_POST['cid']时,它原来是空白的;而widtype 是正确的。

【问题讨论】:

  • 您在开发者工具/网络监视器中看到了什么?你能在那里看到完整的正确 POST 请求吗?
  • 是的,它确实以正确的值显示cid
  • 与其自己构建 JSON 有效负载,不如让 Angular 来处理它。通常使用 JS 值创建 dataObj,然后在调用 $http 时使用 angular.toJson(dataObj)
  • 回声仍然是空白的。

标签: php json angularjs


【解决方案1】:

据我了解,所有帖子数据无论如何都会转换为 JSON。手动将数组更改为 JSON 并包含与以下内容相同:

$http.post("my.php", {
        wid: wid,
        type: type,
        cid: [1, 2, 3]
    }

如果可能,在连接的另一端,JSON 会被转换回对象(数组)。 PHP 不打印任何内容,因为数组不能很好地转换为字符串。尽管您应该期望字符串“数组”。尝试回显$_POST['cid'][0]

编辑:
如 cmets 和 this post 中所述,需要以下代码才能使 PHP 和 AngularJS 一起发挥作用:

$postdata = file_get_contents("php://input");
$request = json_decode($postdata);

【讨论】:

  • 对不起。我尝试回显$_POST['cid'][0],但它仍然是空白的。
  • @Keval 由于您使用的是 Angular,您是否看过:stackoverflow.com/questions/15485354/…
  • 我确实看过它,但我从未尝试过,因为除了我字符串化的数组之外,我的其他字段都在进行 POST。我刚试过,它奏效了。我不明白是什么问题。虽然,我使用了transformRequest 并让我的代码正常工作。我可以使用 $_POST 并执行我的功能。
  • 请编辑您的答案并在您链接到我的帖子中添加 PHP 代码。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-26
  • 2023-04-05
  • 1970-01-01
  • 2011-05-22
相关资源
最近更新 更多