使用AngularJS $资源进行发布

时间:2014-02-22 07:24:42

标签: javascript angularjs

使用普通的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']);

3 个答案:

答案 0 :(得分:1)

感谢我的一位朋友,我终于让代码运行了。问题不在于我的Angualar Code,而在于PHP代码。

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

以下是我的运行方式:Angularjs $http.post, passing array to PHP

答案 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();