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);