【问题标题】:Angular do POST to PHPAngular做POST到PHP
【发布时间】:2016-03-27 21:09:44
【问题描述】:

我一直在使用我的服务器,目前找不到解决方案。我希望你能帮助我。

我有一个服务,我想从那里发送一个 POST 请求。该服务看起来像:(我想使用一个服务,因为我需要从不同的站点调用它)

angular.module('schwimmfestivalApp')
    .service('groupService', function($http) {
        // AngularJS will instantiate a singleton by calling "new" on this function
        var url = '../../../server/func/getGroups.php';
        var createGroupUrl = '../../../server/func/setGroup.php';
        var groupCategoryUrl = '../../../server/func/getGroupCategory.php';


        this.getGroups = function() {
            return $http.get(url, {cache: false}).then(response => {
                console.log('Groups: ' + JSON.stringify(response.data));
                return response.data;
            });
        };

        this.createGroup = function(group) {
            return $http.post(createGroupUrl, {'group': group}, {headers: {'Content-Type': 'application/x-www-form-urlencoded'}}).then(response => {
                console.log('Group to Create: ' + group);
                console.log('Resonse: ' + JSON.stringify(response));
                console.log('Create Group: ' + response.data);
                return response.data;
            });
        };

    });

getGroups() 方法工作正常。

我的 setGroups() 方法的服务器代码(不是我写的)如下所示:

<?php

require_once '../connect/connect_db.inc';
require_once '../class/gruppe.php';
require_once '../func/getHeader.php';

$db = getConnection();
getHeader('json');

if(isset($_POST['group'])){

    $idGruppe = 0;
    //$gruppeJson = json_decode(file_get_contents("php://input"));
    $gruppeJson = json_decode($_POST['group']);

    $sql = "INSERT INTO gruppe ";
    $sql .="( name, gruppe_typ_id) VALUES ('";
    $sql .= $gruppeJson->{'name'} . "', '";
    $sql .= $gruppeJson->{'idKategorie'};
    $sql .=" ')";

    if ( $db -> query($sql)) {
        $idGruppe = $db -> insert_id ;

        $selectGroup = "SELECT gruppe.id, gruppe.name, gruppe.gruppe_typ_id AS idKategorie, gruppe_typ.name AS kategorie ";
        $selectGroup .= "FROM gruppe, gruppe_typ ";
        $selectGroup .= "WHERE gruppe.gruppe_typ_id = gruppe_typ.id AND gruppe.id = " . $idGruppe;
        if ($result = $db -> query($selectGroup)) {
            while($row = $result->fetch_assoc()) {
                $gruppe = new gruppe();
                $gruppe->id = $row['id'];
                $gruppe->name = $row['name'];
                $gruppe->idKategorie = $row['idKategorie'];
                $gruppe->kategorieName = $row['kategorie'];
            }

            echo json_encode($gruppe);
        } else {
            echo $db->error;
            echo "</br> " . $selectGroup;
        }
    } else{

    }
}

我已经阅读了一些关于你必须使用 file_get_contents 读取数据的内容。但我没有到达那里。 if(isset($_POST['group'])) 不验证为真。

那么我如何构建我的请求才能进入这个 if ? 你对我有什么建议吗?

提前致谢 多米尼克

【问题讨论】:

  • 在您的 php 文件中显示 var_dump($_POST) 并在您从 angular 调用 post 时检查 firebug 中的响应。
  • 好吧,我按照你说的做了,我总是得到一个空数组或 JSON,这取决于我设置的头文件。

标签: php angularjs post


【解决方案1】:

您将能够通过以下方式获取发布的任何数据:file_get_contents("php://input")。这将返回一个 json 字符串,您可以调用 json_decode 以获取键/值对象。

如果您确实想使用$_POST,则必须先对您的数据调用$.param,然后再将其传递给$http.post。这将序列化您的数据,因此 PHP 将创建 $_POST 键/值对。

【讨论】:

  • 我也尝试了 var_dump(file_get_contents("php://input")。但它似乎也是空的。我必须向我的服务注入 $ 吗?
  • $.paramjQuery.param 相同,因此您所要做的就是确保在页面中包含 jQuery 库。
【解决方案2】:

感谢大家的提示。

现在我们使用 Angular 向服务器发送数据的标准方式。

所以在服务器端我们执行$gruppeJson = json_decode(file_get_contents("php://input"));,然后将其解析为 JSON。

你会在这里找到一个很好的解释angularJs POST data in $_POST for php

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-31
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    相关资源
    最近更新 更多