【问题标题】:iam trying to send data from angular services to nodejs backend Nothing happens我正在尝试将数据从角度服务发送到 nodejs 后端没有任何反应
【发布时间】:2017-01-04 23:38:11
【问题描述】:

我在这里附上了我的服务功能。我试图向节点后端发送一个简单的数据,但没有任何反应。但是在这个 API Endpoint 上,事情运行良好,它以良好的形式保存数据(在邮递员中)。我确定我在角度的某个地方错了没有错误正在触发。 没有提出 http 请求

App.service('UserServices', function($rootScope, $http) {
  this.AddToInviteList = function(email, cb) {
    var url = $rootScope.api_server_url + "/users/addtoinvitelist";
    $http({
      method: 'POST',
      url: url,
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
      } // set the headers so angular passing info as form data (not request payload)
    }).success(function(data) {
      console.log("email is posted sucessfully" + data);
      cb(data);
    })
  }
})

我的控制器代码在这里,

App.controller('InviteController', function($scope, $rootScope, $routeParams, $location, UserServices) {
  $scope.AddToInviteList = function(email) {
    UserServices.AddToInviteList(email, function(dataresponse) {
      console.log(dataresponse);
    })
  }
});

下面是我的 HTML 视图 div。

    <div class="tab-content">

        <!--NEWSLETTER FORM-->
                                <div class="panel panel-minimalize">
                                    <h2 class="signin-brand animated-hue"> <i class="fa fa-rocket"></i> MEDICOSHERE</h2>
                                    <div class="panel-body bg-inverse ui-corner-all">
                                        <form action="#">
                                            <div class="form-group">
                                                <label for="subcribeNewsletter" class="control-label">INVITE FORM<br> <small>We are happy to invite you to medicoshere, So please enter your email ID in the below form.</small></label>
                                                <div class="input-group input-group-in input-group-sm">
                                                    <div class="input-group-addon"><i class="fa fa-envelope text-belpet"></i></div>
                                                    <input class="form-control" id="subcribeNewsletter" placeholder="johndoe@mail.com" ng-model="email" required>
                                                    <div class="input-group-btn">
                                                        <button type="submit" class="btn btn-default text-belpet" ng-click="AddToInviteList(email)"><strong>OK</strong></button>
                                                    </div>
                                                </div>
                                            </div><!-- /.form-group -->
                                        </form><!-- /form -->
                                    </div><!-- /.panel-body -->
                                </div><!-- /.panel -->
                                <!--/END NEWSLETTER FORM-->
                            </div><!-- /.cols -->

</main>

【问题讨论】:

  • 您是否收到任何控制台错误?控制器响应时的控制台日志呢?
  • 什么都没有发生...浏览器控制台上没有日志也没有错误...所以触发了基本错误我对其进行了整理然后没有错误也没有日志

标签: angularjs node.js rest http


【解决方案1】:

如果能提供更多关于您的问题的信息会不会很好,但我已经看到了一些潜在的问题。

首先我希望 App 变量 (App.service) 是 Angular 主模块的一个实例。

另外,我相信您必须在服务声明的开始或结束时将函数返回到对象中。这样,当从您的控制器调用它时,它就会按预期工作。

所以我认为它应该是这样的:

var App = angular.module('myApp');
App.service('UserServices', function($rootScope, $http) {
 this.AddToInviteList = function(email, cb) { 
       var url = $rootScope.api_server_url + "/users/addtoinvitelist"; 
       $http({ 
           method: 'POST', 
           url: url,
           headers: { 'Content-Type': 'application/x-www-form-urlencoded '
        } 
    // set the headers so angular passing info as form data (not request payload) })
    .success(function(data) { 
          console.log("email is posted sucessfully" + data); 
          cb(data);
   }) 
}

  return {
         AddToInviteList:AddToInviteList
   }
})

抱歉,缩进不好 :) 用智能手机书写。

希望对你有帮助!

编辑

另外,您确定将文件添加到 index.html 中吗? :D

要检查的另一件事

您可能需要检查您的路由是否正常。也许您没有将该视图关联到正确的控制器。是否包含服务文件可能是您没有收到任何错误的原因之一。

【讨论】:

  • 我已与控制器关联。我检查了返回的东西,但它对我有用.....我也添加了 js 文件..
  • 我也刚刚意识到您正在使用 2 个参数声明服务,但在控制器中调用它时只传递一个(电子邮件)。该服务是否在单独的文件中?你包括它吗?您能否通过控制台记录服务以查看是否返回了服务对象的实例? (在您的控制器中)
  • 很高兴知道!我很高兴我能帮上忙。如果您发现我的答案完整且有必要解决您的问题,请标记为已接受答案!谢谢!所以当其他人看到这个问题时,他们会知道你从哪里得到你的回复:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-02
  • 2022-01-12
相关资源
最近更新 更多