【问题标题】:POSTing using AngularJS $resource使用 AngularJS $resource 发布
【发布时间】:2014-02-22 07:24:41
【问题描述】:

使用普通的 html 表单,我可以通过向 /api/tasks/insert/ 发送 POST 请求来添加新任务 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");
            });

Angular 不会给我任何错误。只需向 url 发送一个空白 POST 请求。

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

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

上面指出的行是我的 PHP 中的以下行:

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

【问题讨论】:

  • 我做了,但没有快乐。 :( 我的代码看起来是正确的,对吧?
  • 在请求头和响应下的浏览器网络窗格中检查?看看数据有没有发送?
  • 检查问题,我已将答案添加到您的评论中。

标签: javascript angularjs


【解决方案1】:

感谢我的一个朋友,我终于让代码运行起来了。问题不在于我的 Angular 代码,而在于 php 代码。

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

这是我运行它的方法:Angularjs $http.post, passing array to PHP

【讨论】:

    【解决方案2】:

    您查看调试器的网络选项卡了吗?您可以检查是否将有效数据发送到服务器。如果没问题,这不是 JS 或 Angular 问题。乍一看,您似乎有 angular 的有效代码。以防万一检查您是否设置了正确的 ajax 标头。

    “X-Requested-With”:“XMLHttpRequest”

    其他 AJAX 调用是否适合您?

    【讨论】:

      【解决方案3】:

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

      服务

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

      控制器

      Tasks.$createTask();
      

      【讨论】:

      • 请看我的回答。问题不在于 JS,而在于 PHP。
      • 在您的浏览器上检查网络并查看 POST 数据是否在 head 部分中传递
      猜你喜欢
      • 1970-01-01
      • 2018-02-06
      • 2016-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多