【问题标题】:Why i am getting trying to get property of non-object error in AngularJs?为什么我试图在 AngularJs 中获取非对象错误的属性?
【发布时间】:2016-05-08 06:02:32
【问题描述】:

我是 Angular JS 的新手,我想将数据从表单插入 MySQL 数据库表(在我的情况下,表名是雇员)但是当我点击提交时它没有插入。我在浏览器中编译了 insert.php 文件,这给了我这个错误 "Trying to get property of non-object" 。我正在发送 JSON 格式的数据,然后我在 index.php 文件中解码,但是当我尝试通过 $data 对象访问解码后的数据时,它给了我提到的错误。

myApp.js 代码

var app = angular.module('myApp',[])

.controller("myController",function($scope,$http){
    $scope.insertData = function(){
        $http.post("insert.php",{'name': $scope.name,'fname': $scope.fname,'dept': $scope.dept})
        .success(function(data,status,headers,config){
           console.log("Inserted Successfuly!"); 
        });
    }
});

插入.php 代码

<?php
$data = json_decode(file_get_contents("php://input"));
$name = $data->name;
$fname = $data->fname;
$dept = $data->dept;

$host = 'localhost';
$dbname = 'company';
$dbusername = 'root';
$dbpass = '';

$connection = mysqli_connect($host,$dbusername,$dbpass,$dbname);

if (mysqli_connect_errno()){
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}else{
    $query = "INSERT INTO employe ('id','ename','fname','dept') VALUES('','$name','$fname','$dept')";
    $query_run = mysqli_query($connection,$query);
}
?>

index.html 代码

<html ng-app="myApp">

    <head>
        <title> Using Angular with PHP! </title>
        <!--<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0-rc.1/angular.min.js"></script>-->
        <style type="text/css" src="css/bootstrap.min.css"></style>
    </head>

    <body>   
        <div class="container">
            <div class="row">
                <div class="col-lg-12" ng-controller="myController">
                    <form>
                        Your Name:   <input type="text" ng-model="name" /><br><br>
                        Father Name: <input type="text" ng-model="fname" /><br><br>
                        Department : <input type="text" ng-model="dept" /><br><br>
                        <input class="btn btn-success" type="button" value="Submit" ng-click="insertData()" />
                    </form>
                </div>
            </div>
        </div> 


       <script type="text/javascript" src="js/angular/angular.min.js"></script>
       <script type="text/javascript" src="js/bootstrap/bootstrap.min.js"></script>
       <script type="text/javascript" src="js/app.js"></script>
    </body>
</html>

【问题讨论】:

  • "我正在发送 JSON 格式的数据" - 但你不是。试试var_dump($_POST);,你会看到实际收到了什么。
  • @rjdown 那么这个 "$http.post("insert.php", " 行是做什么的?我丢弃了 $_POST 它打印出 "array(0) { }" 我没有明白了。
  • 您是否尝试打印出file_get_contents("php://input") 并查看其中是否包含任何数据?
  • @blacksheep_2011 是的,它返回 string(0) ""

标签: javascript php mysql angularjs


【解决方案1】:

你会笑,但只要在你的表名周围添加这些``就可以了

  $query = "INSERT INTO `employe`(`id`, `ename`, `fname`, `dept`) VALUES('','$name','$fname','$dept')";

【讨论】:

    猜你喜欢
    • 2018-07-11
    • 2018-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多