使用普通的html表单,我可以通过向/ api / tasks / insert /发送POST请求来添加新任务 POST数据包括$ name和$任务描述。 但是,当我使用Angular将数据推送到php中的REST API时,只发送一个POST请求并在数据库中创建一个空行。 这意味着POST变量未被传递,即名称和描述。 我做错了什么?
我最近几个小时都被困在这里。我检查了无数的教程,并且非常确定语法。我在PHP中的后端REST api工作正常。
var res=$resource('http://localhost/api/tasks/insert/',{},
{
createTask:{method:'POST'}
});
postData={name:"Hello",description:"DescBaby"}
res.createTask({},postData);
//res.createTask(postData); tried this also, but doesn't work
我根据评论尝试的另一个变体是:
res.createTask({name:"TestName", description:"descBaby"}).$promise.then(function(value)
{
console.log("Success"); //I get success in console.
},function(errResponse)
{
console.log("Error");
});
Angular不会给我任何错误。只需向网址发送空白POST请求。
编辑: 我在Chrome浏览器的网络窗格中检查了数据是否已发送,因为事实证明它已被发送。 但是,在回复中它表明了这一点:
未定义索引:XYZ.php行ABC中的名称。
上面指出的行是我的PHP中的以下行:
$obj->InsertTask($_POST['name'],$_POST['description']);
答案 0 :(得分:1)
感谢我的一位朋友,我终于让代码运行了。问题不在于我的Angualar Code,而在于PHP代码。
事实证明我无法将POST数据读作$ _POST []。 在这种情况下应该使用file_get_contents,因为数据是通过JSON有效载荷而不是通过请求参数发送的!
答案 1 :(得分:0)
您是否查看了调试器的网络选项卡?您可以检查是否有效数据已发送到服务器。如果没关系,这不是JS或Angular问题。在第一眼看来,你似乎有有效的角度代码。以防万一你是否设置了正确的ajax标题。
“X-Requested-With”:“XMLHttpRequest”
其他AJAX调用是否适合您?
答案 2 :(得分:0)
尝试此操作(并创建工厂以遵循最佳做法):
<强>服务强>
services.factory("Tasks", function($resource) {
return $resource('http://localhost/api/tasks/insert/', {}, {
createTask: {method:'POST', params: {name:"Hello",description:"DescBaby"}}
})
});
<强>控制器强>
Tasks.$createTask();