我使用angular作为前端,后端使用php。
我正在尝试将一些数据作为数组从angular发布到php,并在控制台中获取错误array_keys() expects parameter 1 to be array
。
angular.js
var form_data_head = {};
form_data_head['doc_no'] = $scope.add.doc_no;
form_data_head['date'] = $scope.add.tanggal;
form_data_head['requisitor'] = $scope.add.requisitor;
$http({
method: 'POST',
url: "api/config/function-insert.php",
data: {
form_data_head: form_data_head,
tablename: 'pr_head',
},
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
}
}).then(function(response){
console.log(response.data);
}, function(response){
console.log("failed");
})
PHP
<?php
require_once 'db.php';
$postdata = file_get_contents('php://input');
$request = json_decode($postdata);
$table_name = $request->tablename;
$form_data_head = $request->form_data_head;
$fields = array_keys($form_data_head);
$sql = "INSERT INTO ".$table_name." (`".implode('`,`', $fields)."`) VALUES('".implode("','", $form_data_head)."')";
return $mysqli->query($sql);
?>
将数组从angular传递给php是错误的方法吗?
更新
如果我添加var_dump($request->form_data_head);
object(stdClass)#3 (3) {
["doc_no"]=>
string(4) "test"
["date"]=>
string(24) "2016-05-10T04:26:02.857Z"
["requisitor"]=>
string(0) ""
}
答案 0 :(得分:1)
json_decode($postdata, false)
将你的json变成StdClass
json_decode($postdata, true)
将你的json变成数组
$request = json_decode($postdata,true);
$table_name = $request['tablename'];
$form_data_head = $request['form_data_head'];
$fields = array_keys($form_data_head);