javascript - 如何在 Angular/Node.js/Express 中将客户端参数传递给服务器端

标签 javascript angularjs node.js express angularjs-http

可能是一个非常基本的问题,但我似乎找不到简单的答案。

我有一个利用 Angular 的 $http 的 GET 方法,它请求来自特定 url (URL_OF_INTEREST) 的 promise 。

在此服务器上,我运行了一个可以处理 GET 请求的快速脚本 server.js 脚本。

server.js

var express    = require('express');        // call express
var app        = express();                 // define our app using express
var bodyParser = require('body-parser');
var stripe     = require("stripe")("CUSTOM_TEST_TOKEN");

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

var port = process.env.PORT || 8080;        
var router = express.Router();              // get an instance of the express Router

router.get('/', function(req, res, next) {

    var stripeToken = "CUSTOM_PAYMENT_TOKEN";

    var charge = stripe.charges.create({
        amount: 1100, // amount in cents, again
        currency: "usd",
        source: stripeToken,
        description: "Example charge"
    }, function(err, charge) {
        if (err && err.type === 'StripeCardError') {
            res.json(err);   
        } else {
            res.json(charge);   
        }
    });
});

app.use(function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");

    next();
})

app.use('/api', router); // register our route
app.listen(port); // start our server
console.log('Magic happens on port ' + port);

我可以使用 Angular GET 方法与 URL_OF_INTEREST 通信,如下所示:

$http.get('URL_OF_INTEREST')
        .success(
            function(success){
                console.log(success)
            })
        .error(
            function(error){
                console.log(error)
            });

但是,理想情况下,需要从 Angular 客户端应用程序传递字段数量、货币、来源和描述。

这如何实现以及我的 express 应用程序如何读取这些数据?

最佳答案

您需要按以下方式在 get 调用中传递数据:

var data = {
    amount: 3,
    currency: 2,
    source: 3,
    description: 4
};

$http.get('URL_OF_INTEREST', data) // PASS THE DATA AS THE SECOND PARAMETER
    .success(
        function(success){
            console.log(success)
        })
    .error(
        function(error){
            console.log(error)
        });

在你的后端,你可以得到你的 url 参数如下:

router.get('/', function(req, res, next) {

    var amount = req.query.amount; // GET THE AMOUNT FROM THE GET REQUEST

    var stripeToken = "CUSTOM_PAYMENT_TOKEN";

    var charge = stripe.charges.create({
        amount: 1100, // amount in cents, again
        currency: "usd",
        source: stripeToken,
        description: "Example charge"
    }, function(err, charge) {
        if (err && err.type === 'StripeCardError') {
            res.json(err);   
        } else {
            res.json(charge);   
        }
    });
});

关于javascript - 如何在 Angular/Node.js/Express 中将客户端参数传递给服务器端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33108326/

相关文章:

javascript - Intern 4 测试加载 Dojo2 加载器失败

javascript - 如何清除 ng-include 中的表单

node.js - npm 安装返回 "TypeError: Cannot convert undefined or null to object"

javascript - 通过routeProvider找不到 Controller

jquery - 将 AngularJS 与 jQuery 和 CSS 框架结合使用

javascript - 为什么这段代码会导致 Node.js 使用 phantom 模块挂起

javascript - JavaScript堆如何处理递归

javascript - AngularJs 不使用 ngModel 序列化表单数据

javascript - 在 Cufon 中使用 jquery not() 选择器

javascript - D3js单单杠三种颜色