最好的方法是在Angular JS中提升我的提交形式的竞争力

时间:2016-01-26 16:48:20

标签: angularjs forms slim

我正在尝试向我的Slim API发送表单中的数据。

我的表格是:

<form>
    Username:<br>
    <input type="text" name="username"><br>
    Password:<br>
    <input type="text" name="password">
    <input type="button" value="submit" ng-click="testDatabaseNewUser()">
</form> 

我的控制器:

angular.module('appDatabaseCtrl', [])
.controller('databaseCtrl', ['$scope', '$http', '$log',
    function($scope, $http, $log){
        $scope.testDatabaseNewUser = function(){
            $http.post('api/New_User').success(function(data) {
                $log.info("succes!");
                $log.log(data);
            })
            .error(function (data, status){
                $log.error("error!");
                $log.log(data);
            });
        };
    }
]);

在我的API中,我有:

<?php

require 'vendor/autoload.php';
require 'config/config.php';

$app = new \Slim\App;

$app->post('/New_User', 'addUser');

$app->run();

function DB_Connection() {
    global $dbparams;
    $dbhost = $dbparams['host'];
    $dbuser = $dbparams['user'];
    $dbpass = $dbparams['password'];
    $dbname = $dbparams['dbname'];
    $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);  
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    return $dbh;
}

function addUser($req, $resp, $args) {
    ...
}

?>

了解所有这些,我只想在我的addUser函数中访问我的表单内容。我知道我可以在网址中传递这些信息,但我想要一种不需要我这样做的方法。

3 个答案:

答案 0 :(得分:0)

当您使用请求方法&#39; POST&#39;您可以在请求的BODY中传递一些信息。

在角度你可以这样做:

$http.post('api/New_User')函数中传递对象

  

$ http.post(&#39; API / New_User&#39;,对象)

<强> HTML

<form>
    Username:<br>
    <input type="text" name="username" ng-model="user.username"><br>
    Password:<br>
    <input type="text" name="password" ng-model="user.password">
    <input type="button" value="submit" ng-click="testDatabaseNewUser()">
</form> 

您的 控制器

angular.module('appDatabaseCtrl', [])
.controller('databaseCtrl', ['$scope', '$http', '$log',
    function($scope, $http, $log){
        $scope.user = {};
        $scope.testDatabaseNewUser = function(){
            $http.post('api/New_User', $scope.user).success(function(data) {
                $log.info("succes!");
                $log.log(data);
            })
            .error(function (data, status){
                $log.error("error!");
                $log.log(data);
            });
        };
    }
]);

在你 PHP

function addUser($req, $resp, $args) {
    ...
    $req.body ...
}

我想这会有所帮助

  

http://www.angularcode.com/demo-of-a-simple-crud-restful-php-service-used-with-angularjs-and-mysql/

答案 1 :(得分:0)

我找到了解决方案,它与Alvaro建议完全一样,但API中的代码有点不同:

function addUser($req, $resp, $args) {
    $user = json_decode($req->getBody());
    $user->privilege;
}

答案 2 :(得分:0)

我找到了解决方案,就像Alvaro说的那样,但有点不同。

在PHP中:

function addUser($req, $resp, $args) {
    $user = json_decode($req->getBody());

    //Than I can just use
    $user->username;
    $user->password;
}