angularjs - 将一组对象(JSON 数据)发布到 PHP 页面

Posted

技术标签:

【中文标题】angularjs - 将一组对象(JSON 数据)发布到 PHP 页面【英文标题】:angularjs - POST an array of objects(JSON data) to a PHP page 【发布时间】:2015-05-05 05:54:53 【问题描述】:

我的 JSON 数据的示例:

$scope.a = [
            "email": "keval@gmail",
            "permissions": 
                "upload": "1",
                "edit": "1"
            
        , 
            "email": "new@aa",
            "permissions": 
                "upload": "1",
                "edit": "1"
            
        ];

我想发布相同的内容,这是我的方法:

$http(
    method: 'POST',
    url: 'backend/savePermissions.php',
    data: 
        mydata: $scope.a
    ,
    headers: 
        'Content-Type': 'application/x-www-form-urlencoded'
    
)
.success(function(data) 
    console.log(data);
);

而PHP是接受请求并响应:

echo $_POST['mydata'];

我在通话前尝试了JSON.stringify,并在回显时尝试了json_decode;仍然没有工作。一直在尝试我能想到的所有可能性,以及我在网络上找到的内容/其他问题,但仍然无法正常工作。

【问题讨论】:

我认为如果数据对象中属性的值未定义,那么它甚至不会发送我尝试添加 null 并且可以在控制台的请求标头中看到它。 plnkr.co/edit/IqQY5dJoS5VMObsYsbha?p=preview 抱歉,我怀疑我是否按照你说的去做。无论如何,我在下面得到了解决方案。谢谢。 @keval 您是否尝试使用 AngularJS 和 PHP 制作网络服务?如果是,那么我想知道您的 json 输出是否解析了 jsonlint.com 中的 JSON 验证,因为我正在尝试做同样的事情(AngularJS + PHP 中的 Web 服务)并且我在 JSONLint 解析中得到了整个 html 是的,我的 JSON 根据 JSONLint 是有效的。而且我没有得到您,您所说的“获取整个html”是什么意思?您能否在新问题中发布您的代码并给我链接?或者只是给我看代码,我会试着看看有什么问题。 【参考方案1】:

我为你制作了 plnkr http://plnkr.co/edit/K8SFzQKfWLffa6Z4lseE?p=preview

$scope.postData = function () 
    $http.post('http://edeen.pl/stdin.php', user:$scope.formData).success(
      function(data)
        $scope.response = data
      )
  

如您所见,我发送的是未格式化的原始 JSON,然后在 php 中

<?php
  echo file_get_contents('php://input');

我直接读取 JSON 并回显它,但你可以做任何你想做的事情

阅读更多关于php://input这里http://php.net/manual/en/wrappers.php.php

我在 REST 服务中使用了很长时间,以避免多次将 JSON 转换为字符串

【讨论】:

太棒了!就是这一行,我正在获取数据作为响应;一切看起来都不错。谢谢。【参考方案2】:

我用这个,我可以用它发送 Array JSON:

var array = 
array['key1'] = value1;
array['key2'] = value2;

$http.post(URL, array)
  .success(function(data)
  )
  .error(function()

);

【讨论】:

【参考方案3】:

尝试使用 $httpParamSerializer 或 $httpParamSerializerJQLike

$http(
    method: 'POST',
    url: 'backend/savePermissions.php',
    data: $httpParamSerializer($scope.a),
    headers: 
        'Content-Type': 'application/x-www-form-urlencoded'
    
)
.success(function(data) 
    console.log(data);
);

【讨论】:

以上是关于angularjs - 将一组对象(JSON 数据)发布到 PHP 页面的主要内容,如果未能解决你的问题,请参考以下文章

Android 怎样将一组json数据的key value对应的放入到listview中显示两列

如何将一组字段写入 JSON?

如何将一组 java 对象表示为数据库中其他对象的字段?

尝试将一组对象保存到 Firestore 并将其加载回来

有没有办法将一组表单输入字段作为对象数组发布?

将一组指针投射到其他对象?