Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从PHP(mysql)向AngularJS传递数据时没有数据_Javascript_Php_Mysql_Angularjs - Fatal编程技术网

Javascript 从PHP(mysql)向AngularJS传递数据时没有数据

Javascript 从PHP(mysql)向AngularJS传递数据时没有数据,javascript,php,mysql,angularjs,Javascript,Php,Mysql,Angularjs,我对AngularJS和php有问题。不幸的是,我的桌子(见下文)是空的。 但是当我尝试在我的(第一个)angularJS站点加载数据时,我没有得到任何数据。这是我的密码: <!DOCTYPE html> <html ng-app="employeesApp"> <head> .... </head> <body ng-controller="employ

我对AngularJS和php有问题。不幸的是,我的桌子(见下文)是空的。 但是当我尝试在我的(第一个)angularJS站点加载数据时,我没有得到任何数据。这是我的密码:

    <!DOCTYPE html>
        <html ng-app="employeesApp">
        <head>
        ....
        </head>
        <body ng-controller="employeesCtrl">
        ...
        <h2>employees</h2>
            <table class="table table-striped table-condensed" >
                <th></th>
                <th>emp_no</th>
                <th>birth_date</th>
                <th>first_name</th>
                <th>last_name</th>
                <th>gender</th>
                <th>hire_date</th>
                <tr  ng-repeat="row in employees">
                    <td><i class="fa fa-pencil-square-o" aria-hidden="true"></i> <i class="fa fa-trash" aria-hidden="true"></i></td>
                    <td>{{ row.emp_no}}</td>
                    <td>{{ row.birth_date}}</td>
                    <td>{{ row.first_name}}</td>
                    <td>{{ row.last_name}}</td>
                    <td>{{ row.gender}}</td>
                    <td>{{ row.hire_date}}</td>
                    </tr>
                </table>
        ...
        <!-- JS -->
        <script type="text/javascript" src="../js/angular.min.js"></script>
        <script type="text/javascript" src="../js/angular-sanitize.min.js">
</script>
...
        <script>
        angular.module("employeesApp", [])
        .controller('employeesCtrl', function ($scope, $http) { 

            $scope.employees = [];
            $scope.tempEmployeesData = {};

            $scope.getEmployeesRecords = function(){
                $http.get('employees.php?get_simple_list_employees', {
                    params:{
                        'limit':'1000'
                    }
                }).success(function(response){
                        $scope.employees = response.records;
                });
            };
        });
        </script>
        </body>
        </html>
结果是

[{"emp_no":"10001","birth_date":"1953-09-02","first_name":"Georgi","last_name":"Facello","gender":"M","hire_date":"1986-06-26"},
 {"emp_no":"10002","birth_date":"1964-06-02","first_name":"Bezalel","last_name":"Simmel","gender":"F","hire_date":"1985-11-21"}]
无论如何,这里有一些php代码(如果您需要更多,现在就告诉我)

该函数如下所示:

public function get_complex_list_employees($parameter = array()){
    $sql = "SELECT ";
    $sql .= array_key_exists("select",$parameter)?$parameter['select']:'*';
    $sql .= " FROM employees";
    $sql .= array_key_exists("where",$parameter)?" WHERE ".$parameter['where']:'';
    $sql .= array_key_exists("order_by",$parameter)?" ORDER BY ".$parameter['order_by']:'';
    $sql .= array_key_exists("limit",$parameter)?" LIMIT ".$parameter['limit']:'';
    $query = $this->db->query($sql);

    return !empty($query)?$this->getResultArray($query):false;
    }
还有“电话”

我的AngularJS脚本看起来像

http://.../employees.php?cmd=get_simple_list_employees&param=a%3A1%3A{s%3A5%3A"limit"%3Bs%3A1%3A"2"%3B}
<script>
var app = angular.module("employeesApp", [])
app.controller('employeesCtrl', function ($scope, $http) {  

    $scope.employees = [];
    $scope.tempEmployeesData = {};

    $http.get('<?php echo $_SERVER['PHP_SELF'] ?>', {
            params:{
                cmd: 'get_complex_list_employees',
                param: [{limit: 10, select: "*", where: "first_name like \"a%\""}]
            },
            **paramSerializer: '$httpParamSerializerJQLike'**
    }).then(function(response){
                //console.log(response.data);
                //console.log(response.status);
                $scope.employees = response.data;
        });

});
</script>

var app=angular.module(“employeesApp”,[])
app.controller('employeesCtrl',函数($scope,$http){
$scope.employees=[];
$scope.tempEmployeesData={};
$http.get(“”{
参数:{
cmd:“获取复杂的员工列表”,
参数:[{limit:10,选择:“*”,其中:“名字像\“a%\”}]
},
**paramSerializer:“$httpParamSerializerJQLike”**
}).然后(功能(响应){
//console.log(response.data);
//console.log(响应状态);
$scope.employees=response.data;
});
});
重要的一步是

paramSerializer:“$httpParamSerializerJQLike”

我在这里找到了解决办法

您的http请求中没有名为
cmd
的参数,您可能需要

$scope.getEmployeesRecords = function(){
            $http.get('employees.php', {
                params:{
                    'cmd':'get_simple_list_employees',
                    'limit':'1000'
                }
            }).then(function(response){
                    $scope.employees = response.data.records;
            });
        };

仅供参考,
success()
。使用
.then(函数(响应){$scope.employees=response.data.records;})
instead@phil-谢谢你的建议-我将更改代码(和我的帖子)@rob maybe limit param被忽略,因为你的url中已经有一个参数列表。尝试将参数放在url或param对象中,但不要放在bothI中编辑问题-最后有一个工作版本-感谢您的帮助-主要技巧是“paramSerializer:“$httpParamSerializerJQLike”
<script>
var app = angular.module("employeesApp", [])
app.controller('employeesCtrl', function ($scope, $http) {  

    $scope.employees = [];
    $scope.tempEmployeesData = {};

    $http.get('employees.php?cmd=get_simple_list_employees', {
            params:{
                'limit':'10'
            }
    }).success(function(response){
                console.log(response);
                console.log(response.status);
                $scope.employees = response;
        });

});
</script>
<script>
var app = angular.module("employeesApp", [])
app.controller('employeesCtrl', function ($scope, $http) {  

    $scope.employees = [];
    $scope.tempEmployeesData = {};

    $http.get('employees.php?cmd=get_simple_list_employees', {
            params:{
                'limit':'10'
            }
    }).**then**(function(response){
                console.log(response.data);
                console.log(response.status);
                **$scope.employees = response.data;**
        });

});
</script>
$command="";
$parameter="";
if (!empty($_GET["paramURL"]) && !empty($_GET["paramJS"])) {
    echo "error: dont use both parameters at the same time !!  you must use paramJS OR paramURL  ";
    exit;   }
if (!empty($_GET) && !empty($_GET["cmd"])) {
        $command=$_GET["cmd"];
        if (!empty($_GET["paramURL"])){
            $parameter=$_GET["paramURL"];
            $parameter = stripslashes($parameter);
            $parameter = unserialize($parameter);
            }
        if(!empty($_GET["paramJS"])){
            $parameter=$_GET["paramJS"];
            $parameter=$parameter[0];
            }
    }
public function get_complex_list_employees($parameter = array()){
    $sql = "SELECT ";
    $sql .= array_key_exists("select",$parameter)?$parameter['select']:'*';
    $sql .= " FROM employees";
    $sql .= array_key_exists("where",$parameter)?" WHERE ".$parameter['where']:'';
    $sql .= array_key_exists("order_by",$parameter)?" ORDER BY ".$parameter['order_by']:'';
    $sql .= array_key_exists("limit",$parameter)?" LIMIT ".$parameter['limit']:'';
    $query = $this->db->query($sql);

    return !empty($query)?$this->getResultArray($query):false;
    }
$RH = new RequestHandler();
if ( $command != "") {
    if ( $parameter != "") {
        $result = $RH->$command($parameter);
    }
    else {
        $result = $RH->$command();
    }
echo $result;
exit;
<script>
var app = angular.module("employeesApp", [])
app.controller('employeesCtrl', function ($scope, $http) {  

    $scope.employees = [];
    $scope.tempEmployeesData = {};

    $http.get('<?php echo $_SERVER['PHP_SELF'] ?>', {
            params:{
                cmd: 'get_complex_list_employees',
                param: [{limit: 10, select: "*", where: "first_name like \"a%\""}]
            },
            **paramSerializer: '$httpParamSerializerJQLike'**
    }).then(function(response){
                //console.log(response.data);
                //console.log(response.status);
                $scope.employees = response.data;
        });

});
</script>
$scope.getEmployeesRecords = function(){
            $http.get('employees.php', {
                params:{
                    'cmd':'get_simple_list_employees',
                    'limit':'1000'
                }
            }).then(function(response){
                    $scope.employees = response.data.records;
            });
        };