如何使用Json将数据从angularJS控制器发送到PHP


how to send data from angularJS controler to PHP using Json

好吧,我有这个问题关于发送多数据从JS到PHP,我使用angularJS。问题是我无法接收任何数据,我是AngularJS这样的东西的初学者。这是我的JS部分:

var data = {"name":name, "cin":cin, "job":job};
var config = {
        params: data,
        headers: { 'Content-Type': 'application/json' }
    };
    $request = "php/readFromDatabase.php";
    $http.post($request, config).then(function (response) {
        $scope.collectionData = response.data.records;
    });

这应该很好,工作我有我的数据作为结构(对象)的名称和cin和作业是变量,当我使用angularJS控制器点击按钮,这个函数应该启动并调用一个PHP文件:

<?php
header("Access-Control-Allow-Origin: *");
header('Content-Type: application/json');
$name = $_POST['name'];

我使用这些信息来查找数据库中的数据,然后我将它们echo为JSON格式,我想使用$http。获取{},这样我就可以调用response.data.records,而不是使用$ajax.{}。问题是这个$_POST['name']不起作用;即使这样也没有用:

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

正如我所说的,我是新来的,所以请告诉我我做错了什么,因为我没有找到任何可以帮助我的东西,我把我在互联网上找到的一切都绑起来了。希望有人能帮助我,提前谢谢你。

Edit :

这是我的JS文件:

app.controller('shearch_data', function ($scope, $http) {
$scope.ShearchFunction = function () {
    var name = " ";
    if ($('#toggle_name').prop('checked') == true)
        name = $('#inputName').val();
    var cin = " ";
    if ($('#toggle_cin').prop('checked') == true)
        cin = $('#inputCIN').val();
    var job = " ";
    if ($('#toggle_job').prop('checked') == true)
        job = $('#inputJob').val();
    var data = {'name': "ffss", 'cin': cin,  'job': job};
    var url = "php/readFromDatabase.php";
    $http.post(url, data).then(function (response) {
        $scope.collectionData = response.data.records;
    }).catch(function (err) {
        alert('something went wrong')
    });
};
});

my PHP:

<?php
header("Access-Control-Allow-Origin: *");
$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
$name = $request->name;
$cin = $request->cin;
$job = $request->job;
$output = "";
$output .='{"Name":"'.$name.'",';
$output .='"Job":"'.$job.'",';
$output .='"Cin":"'.$cin.'"}';
$output = '{"records":[' . $output . ']}';
echo($output);

这就是我要做的测试,使用http从JS发送数据到PHP。然后我收到它作为json,它现在只是为了测试。

$http.post( url, data, config)的参数和配置错误

从配置中删除params,这些是GET url查询字符串参数

编辑:如果你所有的设置是'Content-Type头你不需要一个配置....application/json是默认的

var config = {       
    headers: { 'Content-Type': 'application/json' }
};
var url = "php/readFromDatabase.php";
$http.post(url, data, config).then(function (response) {
    $scope.collectionData = response.data.records;
}).catch(function(err){
    alert('Ooops...something went wrong')
});