【问题标题】:Posting Input value as param to web service API in Angular将输入值作为参数发布到 Angular 中的 Web 服务 API
【发布时间】:2015-11-24 17:50:06
【问题描述】:

我已经开始学习 Angular,但我被困在一些应该是微不足道的事情上。我来自 Rails 背景,创建了一个非常简单的 Rails Web 服务来管理 MailingList。目前我的网络服务中存在 2x API 端点:

/api/v1/mailing_lists [GET]
/api/v1/mailing_lists [POST]

POST 端点需要一个有效的电子邮件作为 API 调用中的 PARAM。这就是我卡住的地方。如何在 Angular 中将此参数传递给我的 API?我尝试过使用网络上的解决方案,但我只是做得不对。到目前为止,这是我所拥有的:

在我的 services.js 中:

angular.module('webFrontendApp.services', []).factory('MailingList', function($resource) {
    var data = $resource(
      'http://localhost:3000/api/v1/mailing_lists.json',
      {},
      {
        // 'get': { method:'GET', cache: false},
        'query': { method:'GET', cache: false, isArray:true },
        'save': {method: 'POST', cache: false }
      });
    return data;
});

在 app.js 中

....
.when('/list/new', {
        templateUrl: 'views/list-new.html',
            controller: 'MailingListCtrl'
      })

....

作为 mailinglist.js 的控制器

angular.module('webFrontendApp.controllers', [])

.controller('MailingListCtrl', function($scope, MailingList) {
    // Get all posts
    $scope.mailing_lists = MailingList.query();

    // Our form data for creating a new post with ng-model
    $scope.memberData = {};
    $scope.newMember = function() {
      var member = new MailingList($scope.memberData);
      member.$save();
    };
});

表格如下所示:

<form role="form" ng-submit="newMember()">
  <div class="row">
    <div class="input-group">
      <input type="text" ng-model="memberData.email" placeholder="New mailing list member" class="form-control">
      <span class="input-group-btn">
        <input type="submit" class="btn btn-primary" value="Add">
      </span>
    </div>
  </div>
</form>

当我提交表单时,似乎什么都没有发生,但我收到了来自我的网络服务的 405 错误响应。查看我的 Web 服务日志后,我可以看到收到了一个 POST 请求,但没有传递任何参数,因此它被拒绝了。

任何帮助将不胜感激!

附言。我已确保在我的 Rails 应用上启用 CORS。

【问题讨论】:

    标签: javascript ruby-on-rails angularjs ngresource


    【解决方案1】:

    $save 方法中传递参数,在MailingList 中传递post_data,所以基本上这应该可以工作

    $scope.newMember = function() {
        var member = new MailingList();
        member.$save({email: $scope.memberData.email});
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-25
      • 2018-12-19
      • 1970-01-01
      • 2013-08-07
      • 2023-03-09
      • 1970-01-01
      • 2015-05-28
      相关资源
      最近更新 更多