使用普通的html表单,我可以发送POST请求到/api/ task /insert/ POST数据(包括任务的$name和$description ),从而添加一个新任务。但是,当我使用REST将数据推到php中的REST时,只发送POST请求,并在数据库中创建一个空行。这意味着没有传递POST变量,即名称和描述。我做错了什么?
在过去的几个小时里我一直被困在这个问题上。我已经检查了无数的教程,并且对语法很有信心。我的PHP后端REST运行良好。
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");
});角度不会给我带来任何错误。只是向url发送一个空白的帖子请求。
编辑:我在Chrome的网络窗格中检查了数据是否被发送,结果是它被发送了。然而,在回应中,它显示如下:
未定义索引: XYZ.php行中的名称。
上面指向的行是我的PHP中的以下一行:
$obj->InsertTask($_POST['name'],$_POST['description']);发布于 2014-02-22 09:46:28
多亏了我的一个朋友,我终于开始运行代码了。问题不在于我的Angualar代码,而在于php代码。
事实证明,我不能将POST数据作为$_POST[]来阅读。在这样的情况下,应该使用file_get_contents,因为数据是通过JSON有效负载而不是通过请求参数发送的!
发布于 2014-02-22 09:32:24
您看过调试器的“网络”选项卡吗?您可以检查是否向服务器发送了有效数据。如果可以的话,这不是JS或角度问题。在第一次看,它似乎有有效的代码角。以防万一,检查是否设置了正确的ajax头。
“X-Requested With”:"XMLHttpRequest“
其他AJAX调用对您有用吗?
发布于 2014-02-22 09:39:09
尝试这样做(并创建一个工厂来遵循最佳实践):
服务
services.factory("Tasks", function($resource) {
return $resource('http://localhost/api/tasks/insert/', {}, {
createTask: {method:'POST', params: {name:"Hello",description:"DescBaby"}}
})
});控制器
Tasks.$createTask();https://stackoverflow.com/questions/21951210
复制相似问题