我从PATCH
到AngularJS
有一个简单的PHP
http请求,我在控制台中收到错误Notice: Undefined property: stdClass::$todoName
。以下是代码:
HTML
<div ng-controller="UpdateTodoController">
<div class="input-field col s12" ng-repeat="t in todo">
<input id="{{ t.id }}" type="text" class="validate" ng-model="todoName">
<label class="active" for="{{ t.id }}">{{ t.name }}</label>
<button class="btn waves-effect waves-light" ng-click="updateTodo(t.id)">Update
</button>
</div>
</div>
控制器
function UpdateTodoController($http, $scope, $routeParams, $location) {
$scope.updateTodo = function(todoId) {
var req = {
method: 'PATCH',
url: 'app/endpoints/update-todo.php',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data: {
todoName: $scope.todoName,
todoId: todoId
}
}
$http(req)
.then(function successCallback(response) {
$location.url('/');
console.log(response);
}, function errorCallback(response) {
console.log(response);
});
}
}
更新todo.php
$data = json_decode(file_get_contents('php://input'));
$todoId = $data->todoId;
$todoName = $data->todoName;
$statement = $db->prepare("UPDATE todo_list SET name=? WHERE id=?");
$statement->execute(array($todoName, $todoId));
$results=$statement->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($results);
它使用id更新特定字段,但会提供NULL
值。我在这里错过了什么吗?谢谢。
答案 0 :(得分:2)
您要发送数据form-urlencoded
,但尝试使用json_decode
。
从角度请求中删除Content-Type
标题。
$http
默认为发送application/json
。
一个简单的测试是返回$data
的转储并在浏览器开发工具中检查