単純なPOSThttpリクエストがあり、エラーが発生Undefined property: stdClass::$number
しUndefined property: stdClass::$message
ます。これが私のコードです:
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>
sendms.php
$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
echo json_encode($request);
渡されるデータがなく、未定義のプロパティエラーが発生します。ここで何かが足りませんか?
ユーザーが入力した値を上書きundefined
するsendMessage()
関数内で設定しているので、それが送信されます。
モデルオブジェクトの宣言を関数の外部に変更して、子スコープに継承されるようにします。
から
$scope.sendMessage = function() {
$scope.loading = true;
$scope.smsForm = {
number: undefined,
message: undefined
};
....
// ajax code
}
に
$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(...
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加