2015-09-30 139 views
0

我有一個簡單的POST HTTP請求,並且出現錯誤Undefined property: stdClass::$numberUndefined property: stdClass::$message。這裏是我的代碼:AngularJS和PHP未定義的屬性:stdClass

smsController.js

angular 
    .module('smsApp') 
    .controller('smsController', smsController) 
    .config(config); 

function config($routeProvider) { 
    $routeProvider 
    .when('/', { 
     controller: 'smsController', 
     templateUrl: 'app/views/messageForm.html' 
    }); 
} 

function smsController($scope, $http) { 

    $scope.sendMessage = function() { 
     $scope.loading = true; 
     $scope.smsForm = { 
      number: undefined, 
      message: undefined 
     }; 

     var data = { 
      number: $scope.smsForm.number, 
      message: $scope.smsForm.message 
     }; 

     var req = { 
      method: 'POST', 
      url: 'app/endpoints/sendsms.php', 
      headers: { 
       'Content-Type': 'application/x-www-form-urlencoded' 
      }, 
      data: data 
     }; 

     $http(req) 
     .then(function successCallback(response) { 
      console.log(response); 
      $scope.loading = false; 
      }, function errorCallback(response) { 
      console.log(response); 
      }); 
    } 

} 

messageForm.html

<div ng-hide="loading"> 
    <div class="input-field col s12"> 
    <input type="text" ng-model="smsForm.number" maxlength="11"> 
    </div> 
    <div class="input-field col s12"> 
    <textarea ng-model="smsForm.message" maxlength="200"></textarea> 
    <button ng-click="sendMessage()">Send</button> 
    </div> 
</div> 

sendsms.php

$postdata = file_get_contents("php://input"); 
$request = json_decode($postdata); 
echo json_encode($request); 

控制檯 enter image description here

沒有傳遞任何數據,我得到未定義的屬性錯誤。我在這裏錯過了什麼嗎?

+0

嘗試尋找'$ _POST'而不是請求正文。 –

回答

1

您正在設置undefinedsendMessage()函數內,它將覆蓋用戶輸入的任何值...所以這就是要發送的內容。模型對象的

更改聲明是功能之外,使其由子作用域得到繼承:

FROM

$scope.sendMessage = function() { 
    $scope.loading = true; 
    $scope.smsForm = { 
     number: undefined, 
     message: undefined 
    }; 
    .... 
    // ajax code 
} 

TO

$scope.smsForm = {}; 

$scope.sendMessage = function() { 
    $scope.loading = true; 

    .... 
    // ajax code 
} 

ng-model會自動添加屬性到$scope.smsForm對象,這就是爲什麼它在這裏被聲明爲空對象的原因。

此外,由於$scope.smsForm具有在api中需要的屬性,因此不需要將它們轉移到新對象data

$http.post('app/endpoints/sendsms.php', $scope.smsForm).then(...

+0

嘿!這是我將得到的最好答案。我有很多關於這個問題的問題,這使我的知識更清晰。非常感謝你! – FewFlyBy

+1

做一些關於角度範圍層次的閱讀......並總是首先思考對象。但它聽起來像一個燈泡剛剛熄滅給你,讓你更好的理解..很高興它幫助 – charlietfl

相關問題