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 页面的主要内容,如果未能解决你的问题,请参考以下文章