2015-05-08 35 views
1

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

我的数组是通过获取对象中每个元素的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一样的o它的字符串,但当我回显$_POST['cid'],它变成空白;而wid & type是正确的。

+0

你怎么在你的开发人员工具看/网络监控?你能看到完整的POST请求吗? –

+0

是的,它确实显示了正确值的“cid”。 – Keval

+0

而不是自己构建你的JSON负载,让角度照顾它。通常使用JS值创建dataObj,然后在调用'$ http'时使用'angular.toJson(dataObj)'' – kachhalimbu

回答

2

根据我的理解,所有发布的数据都会转换为JSON。手动改变你的阵列,以JSON和包括仅仅是一样:

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

在如果可能,JSON被转换回对象(阵列)的连接的另一侧。 PHP不打印任何东西,因为数组没有被很好地转换成字符串。虽然你应该期望字符串'数组'。尝试echo'ing $_POST['cid'][0]

编辑:
正如评论指出和this post下面的代码需要让PHP和AngularJS一起玩:

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

对不起。我试图回显'$ _POST ['cid'] [0]',它仍然是空白的。 – Keval

+0

@Keval由于您使用的角度你看看:http://stackoverflow.com/questions/15485354/angular-http-post-to-php-and-undefined? –

+0

我确实看过它,但我从来没有给它一个尝试,因为我的字段的其他部分都被POST'ed除了我stringify'ed的数组。我只是试过,它的工作。我不明白是什么问题。虽然,我使用'transformRequest'并让我的代码工作。我可以使用$ _POST并执行我的功能。 – Keval