使用AJAX从客户端(角度)获取数据到Node.js

时间:2015-02-26 12:07:53

标签: javascript ajax angularjs node.js mongodb

我在控制器中有一个函数应该从客户端检索Google Maps坐标并将其传递给node.js,然后将它们保存到mongoose模式。然而,没有任何反应。控制器部分如下所示:

    $scope.createEvent = function() {
        $http.post('/api/events', $scope.formData, $scope.latitude, $scope.longitude)
          .success(function (data) {
            var latitude = $scope.latitude;
            var longitude = $scope.longitude;
            $scope.formData = {};
            $scope.meetings = data;
            console.log(data);
         })
           .error(function(data) {
             console.log('Error: ' + data);
        });
};

这部分地图初始化函数负责获取坐标

google.maps.event.addListener(map, "click", function (event) {
        $scope.latitude = event.latLng.lat();
        $scope.longitude = event.latLng.lng();
 });

初始化函数也在与$ scope.initialize

相同的控制器中定义

routes.js:

app.post('/api/events', function(req, res) {
    Event.create({
        title : req.body.title,
        description: req.body.description
        latitude: req.body.latitude,
        longitude: req.body.longitude
    }, function(err, meeting) {
        if (err)
            res.send(err);
    });
});

以防万一,mongoose架构如下所示:

var eventsSchema = new Schema({
  title: String,
  description: String,
  longitude: String,
  latitude: String
});

当用户点击地图时会触发创建操作,因此应该已知纬度和经度,但没有任何反应。如何将此信息发送到节点服务器?

2 个答案:

答案 0 :(得分:2)

在发布之前,U必须将这些值放入范围,然后发布到网址... 可能是这些值来自前端并将该值绑定到范围。

 $scope.createEvent = function() {
            $http.post('/api/events', {
            title : $scope.title,
            description: $scope.description
            latitude: $scope.latitude,
            longitude: $scope.longitude 
        })
              .success(function (data) {

                $scope.meetings = data;
                console.log(data);
             })
               .error(function(data) {
                 console.log('Error: ' + data);
            });
    };

我希望这可以帮助你...

答案 1 :(得分:0)

我的建议是在您的应用中创建工厂服务 angularJS.factory angularJS.$resource

app.factory('Events', ['$resource',
function($resource) {
 return $resource('/api/events', {}, 
     {
      create: {
       method: 'POST'
     }
     });
    }
   ]);
在您的控制器呼叫面板中

app.controller('yourControllerName', ['$scope','Events'
function($scope,Events) {

$scope.createEvent = function(){
  var event = new Events({
        title : $scope.title,
        description: $scope.description
        latitude: $scope.latitude,
        longitude: $scope.longitude 
    });

    event.$create(function(data) {
     $scope.meetings = data;
     console.log(data);
    },function(err){
      console.log(err);
     });

}

 }
]);

我希望我能帮助!!