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

Javascript AngularJS和PHP-注意:未定义的属性:stdClass,javascript,php,angularjs,Javascript,Php,Angularjs,我有一个从AngularJS到PHP的简单PATCHhttp请求,我在控制台中得到了错误注意:未定义属性: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="vali

我有一个从
AngularJS
PHP
的简单
PATCH
http请求,我在控制台中得到了错误
注意:未定义属性: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>
更新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
值。我是不是遗漏了什么?谢谢。

您正在发送数据
表单urlencoded
,但试图在其上使用
json\u decode

从请求中删除
内容类型
标题

$http
默认值是发送
application/json


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

仍然得到相同的结果,但会更加努力。使用补丁有什么特殊原因吗?你试过POST或PUT吗?啊,我只是想更新一个记录。我应该用POST来代替吗?PUT是REST api中最常见的更新方式…您也检查过开发工具中的实际请求以查看实际发送的内容吗?哦,PUT是的。很抱歉没有发送任何内容。。但我在我的帖子上也做了同样的事情,删除,它就起作用了。
$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);