首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AngularJS和stdClass未定义属性:stdClass

AngularJS和stdClass未定义属性:stdClass
EN

Stack Overflow用户
提问于 2015-09-30 13:26:41
回答 1查看 720关注 0票数 0

我有一个简单的POST http请求,并得到一个错误的Undefined property: stdClass::$numberUndefined property: stdClass::$message。这是我的密码:

smsController.js

代码语言:javascript
复制
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

代码语言:javascript
复制
<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

代码语言:javascript
复制
$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
echo json_encode($request);

控制台

没有传递数据,我得到了未定义的属性错误。我是不是漏掉了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-30 13:39:29

您正在将undefined设置在sendMessage()函数中,该函数将覆盖将要发送的任何值-用户entered...so。

更改模型对象的声明,使其处于函数之外,以便由子作用域继承:

从…

代码语言:javascript
复制
$scope.sendMessage = function() {
    $scope.loading = true;
    $scope.smsForm = {
        number: undefined,
        message: undefined
    };
    ....
    // ajax code 
 }

代码语言:javascript
复制
 $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(...

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32867367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档