2014-02-22 71 views
2

使用正常的html表单,我可以通过发送POST请求到/ api/tasks/insert/ 添加一个新任务POST数据包括任务的$ name和$ description。 但是,当我使用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"); 
      }); 

角不给我任何错误。只需发送一个空白的POST请求到网址。

编辑: 我在Chrome的网络窗格中检查数据是否被发送,并且事实证明它正在发送。 但是,在响应中显示:

未定义的索引:XYZ.php中的名称行ABC。

线上面指出的是在我的PHP下面一行:

$obj->InsertTask($_POST['name'],$_POST['description']); 
+0

检查这个网址: http://stackoverflow.com/questions/13269882/angularjs-resource-restful-example –

+0

我做了,但没有喜悦。 :(我的代码似乎正确,但是,对吧? – SLearner

+0

检查请求标题和响应下的浏览器网络窗格?看看数据是否被发送? – joashp

回答

0

你看看调试器的网络选项卡?您可以检查是否有有效的数据被发送到服务器。如果可以的话,这不是JS或Angular问题。在第一次看起来,你似乎有有效的角度代码。以防万一检查你是否设置了适当的ajax头文件。

“X-要求,用”: “XMLHttpRequest的”

等是否为AJAX调用你的工作?

0

试试这个(并创建一个工厂遵循最佳实践):

服务

services.factory("Tasks", function($resource) { 
    return $resource('http://localhost/api/tasks/insert/', {}, { 
     createTask: {method:'POST', params: {name:"Hello",description:"DescBaby"}} 
    }) 
}); 

控制器

Tasks.$createTask(); 
+0

请看我的答案。问题不在于JS,而在于PHP。 – SLearner

+0

在您的浏览器中检查网络并查看POST数据是否在头部段中传递 –

1

感谢我的朋友,我终于得到了代码运行。问题不在于我的Angualar代码,而在于php代码。

事实证明,我无法将POST数据读为$ _POST []。 file_get_contents应该用于这种情况,因为数据是通过JSON有效载荷发送的,而不是通过请求参数发送的!

以下是我得到了它运行:Angularjs $http.post, passing array to PHP