【问题标题】:How call a service wrote with node js form angular如何调用使用node js形式编写的服务
【发布时间】:2016-05-09 14:41:09
【问题描述】:

我已经使用 node 编写了这个服务,它可以工作,但我不知道如何从 angularjs 控制器调用它,我需要调用 post 方法

这是服务:

    var app   = require('express')();
var http = require('http').Server(app);
var mysql = require('mysql');
var bodyParser = require("body-parser");
var connection = mysql.createConnection({
        host     : 'localhost',
        user     : 'root',
        password : '',
        database : 'repositorio',
    });
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

app.get('/',function(req,res){
    var data = {
        "error":1,
        "Usuarios":""
    };

    connection.query("SELECT * from usuario",function(err, rows, fields){
        if(rows.length != 0){
            data["error"] = 0;
            data["Usuarios"] = rows;
            res.json(data);
        }else{
            data["Usuarios"] = 'Usuarios no encontrados..';
            res.json(data);
        }
    });
    /*var data = {
        "Data":""
    };
    data["Data"] = "Welcome to Book Store DEMO...";
    res.json(data);*/
});

app.post('/usuario',function(req,res){
    var Email = req.query.correo;
    var Password = req.query.contrasena;
    var Nombres = req.query.nombres;
    var Apellidos = req.query.apellidos;
    var Usuario = req.query.usuario;
    var data = {
        "error":1,
        "Usuario":""
    };
    console.log("Email: "+Email+" Password "+Password+" Nombres "+Nombres+" Apellidos "+Apellidos+" Usuario"+Usuario);
    if(!!Email && !!Password && !!Nombres && !!Apellidos && !!Usuario){
        var user ={usu_correo: Email,usu_contrasena: Password,usu_nombres:Nombres,usu_apellidos: Apellidos,usu_usuario:Usuario}
        connection.query('INSERT INTO usuario SET ?',user,function(err, rows, fields){
            if(!!err){
                data["Usuario"] = "Error Adding data";
            }else{
                data["error"] = 0;
                data["Usuario"] = "Usuario adicionado con éxito";
            }
            res.json(data);
        });
    }else{
        data["Usuario"] = "Please provide all required data";
        res.json(data);
    }
});
http.listen(8080,function(){
    console.log("Connected & Listen to port 8080");
});

这是我试图将它与 angular 连接,我需要帮助

var app = angular.module('el_acorde_web', []);

app.controller('usuarioscontroller', function($scope, $http)
{
    $scope.usuario = {};
    $scope.usuario.correo = "davidstl5@gmail.com";
    $scope.usuario.nombres = "David Fernano";
    $scope.usuario.apellidos = "Sotelo";
    $scope.usuario.contrasena = "lakjsdlfkja";
    $scope.usuario.usuario = "davidstl5";


    $scope.registrar = function(){
        $http.post('http://localhost:8080/usuario', $scope.usuario)
        .success(function(data) 
        {
            alert(data);
        })
        .error(function(data) 
        {
            alert('Error:' + data);
        });
    }
});

【问题讨论】:

标签: javascript angularjs node.js


【解决方案1】:

您的代码看起来不错,我可以看到您调用 registrar 函数的 HTML 代码吗?看起来您只需要在其他一切正常的情况下添加 ng-click 指令,并且作为最佳实践,我将创建一个工厂或服务并在那里调用一个与 Node 应用程序交互的函数。

【讨论】:

  • 我不会因为你是新手而投反对票,但这应该是评论而不是答案。
  • 好的,感谢@mJunaidSalaat 的提示,昨天没有看到评论文本字段
【解决方案2】:

我找到了解决方案! Chrome是我们安装的问题https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=en

然后使用:

$scope.registrar = function(){
        alert("Entre");
        /*$http.post('http://localhost:8080/usuario', $scope.usuario)
        .success(function(data) 
        {
            alert(data);
        })
        .error(function(data) 
        {
            alert('Error:' + data);
        });*/

        var datos = {correo: $scope.usuario.correo, contrasena: $scope.usuario.contrasena,
                                nombres:$scope.usuario.nombres, apellidos:  $scope.usuario.apellidos,
                              usuario: $scope.usuario.usuario};

        var request = $http({
            method: "POST",
            url: "http://localhost:8080/usuario",                    
            data: datos,
            headers: { 'Content-Type': 'multipart/form-data', 'Authorization': 'Basic ' + btoa(datos), 
            'Access-Control-Allow-Origin': "*"}
        });

        request.success(
            function( data ) {
                alert(data);
            }
        );

        request.error(
            function( data ) {
                alert(data);
            }
            );
    }

一切正常!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-09
    • 2016-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多