AngularJS和PHP - 注意:未定义的属性:stdClass

时间:2015-09-30 02:58:29

标签: javascript php angularjs

我从PATCHAngularJS有一个简单的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值。我在这里错过了什么吗?谢谢。

1 个答案:

答案 0 :(得分:2)

您要发送数据form-urlencoded,但尝试使用json_decode

从角度请求中删除Content-Type标题。

$http默认为发送application/json

一个简单的测试是返回$data的转储并在​​浏览器开发工具中检查