Tag: express

如何使用ExpressJS确定正确的Accept Content-Type

我很难将ajax调用与ExpressJS中的其他调用区分开来。 据我所知,我可以使用request.accepts(‘json’)来识别json请求? 问题是 – 显然,每个电话都接受一切! app.get( ‘*’, function(request, response, next ) { console.log(‘request accepts:’) if( request.accepts( ‘json’ ) ){ console.log( ‘–> accepts json’ ) } if( request.accepts( ‘html’ ) ){ console.log( ‘–> accepts html’ ) } if( request.accepts( ‘blah’ ) ){ console.log( ‘–> accepts blah’ ) // this does not show up } if( request.accepts( […]

发布json以表达使用jQuery

将JSON数据从我的客户端发送到运行express的节点服务器时,我遇到了问题。 这是一个简单的服务器,演示了我的问题: var express = require(‘express’); var app = express(); app.configure(function(){ app.use(express.bodyParser()); app.use(app.router); app.use(express.logger()); }); app.listen(80); app.post(‘/’, function(req,res){ console.log(req.body); console.log(req.body.number + 1); }); 此服务器只是将所有POST数据记录到控制台。 如果我然后将以下内容粘贴到chrome的开发控制台中: $.post(‘/’, {number:1}); 服务器打印出来: { number: ‘1’ } 11 如何阻止我传递的数字被解释为字符串? 这与我正在使用的bodyParser中间件有关吗? 任何帮助赞赏!!

获取具有节点js的授权标头令牌

我想在后端节点js中获取令牌。 首先,我从jwt获取令牌并将其存储在localstorage中,但是当我想使用此令牌发送请求时,我无法在服务器端获取它。 客户端: function list_users(){ url= “http://localhost:8181/users”; var tok = window.localStorage.getItem(‘token’); if (tok) { /* $.ajaxSetup({ headers: { ‘x-access-token’: tok } }); */ $.ajax({ headers: {‘Authorization’: tok}, dataType: “application/json; charset=utf-8”, url, type: ‘GET’, dataType: ‘json’, success: function (json) { alert(“done”); } }) } } 服务器端: router.use(function(req, res, next) { res.header(“Access-Control-Allow-Origin”, “*”); res.setHeader(‘Access-Control-Allow-Methods’, ‘GET, POST, OPTIONS, […]

Express .map函数不返回值

我在视图文件中有一些jquery,我想要使用名称discoverySource获取各个字段的所有值。 由于堆栈用户的一些帮助,解决方案是使用lodash模块,然后将数组映射到单个值,以适合我的sequelize BulkCreate函数。 使用我当前的post设置,.map方法根据填写的字段数量正确地在我的数据库中创建单独的行,但由于某种原因,值未被传递。 我不确定发生这种情况的原因是因为正文解析器值是正确的,并且值正在被设置的变量之外的任何地方正确记录。 我在每个console.log旁边注释,以显示返回的值。 我的问题是我收到了map方法的undefined和[object Object] 。 网站1,网站2,网站3,是我对这些领域的测试值 这是我的路线: .post(function(req, res){ console.log(req.body.discoverySource); //[ ‘Website 1’, ‘Website 2’, ‘Website 3’ ] var sources = _.map(req.body.discoverySource, function (source) { return { discoverySource: source, organizationId: req.body.organizationId }; }); console.log(“These are the” + sources); //These are the[object Object],[object Object],[object Object] console.log(sources.discoverySource); //undefined console.log(sources.organizationId); //undefined models.DiscoverySource.bulkCreate(sources) .then(function(){ return […]

Node.js:使用EventEmitter和Express 4.x进行长轮询 捕获请求关闭

我使用JQuery的ajax请求(xhr)进行long-polling node.js路由。 这会向我的Express服务器发送GET请求并侦听消息总线事件。 我在该GET请求上设置了超时(因为我的代理会终止长请求)。 因此,在超时后,客户端应该将中止事件发送到服务器。 我想捕获中止/关闭/结束事件并删除相关的消息总线侦听器/订阅者。 但我很挣扎。 我尝试了req.on(“关闭”..)和完成的npm模块,但这对我不起作用。 阅读节点的http文档后,我也没那么聪明了: https : //nodejs.org/api/http.html 。 任何想法如何解决这个野兽? 或者更好的方法来删除侦听器以防止内存泄漏? 服务器端要领: // server.js var express = require(“express”); var EventEmitter = require(“events”).EventEmitter; var messageBus = new EventEmitter(); messageBus.setMaxListeners(20); var REST_PORT = (process.env.PORT || 5000); var app = express(); app.get(“/events”, (req, res) => { var listener = function(res) { messageBus.once(“message”, function(data) { […]

jQuery $ .post和$ .ajax POST请求不适用于Express中的app.post()方法

我需要将数据从Express应用程序的前端发送到后端,然后使用需要显示该数据的EJS呈现页面。 问题是app.post()方法,当我通过$.post或$.ajax发出“手动”POST请求时, res.render()函数似乎没有完全或正确执行 假设我通过JQuery发出这个POST请求 $.post(“/test”, { testData: ‘Some test data.’ }); 或者通过AJAX发出POST请求 $.ajax({ type: ‘POST’, data: { testData: ‘Some test data here.’ }), url: ‘/test’, }) 我配置我的app.post()方法来处理Express中的路由 app.post(‘/test’, function(req, res) { res.render(‘./test.ejs’, { testMessage: req.body.testData }); }); 变量testData将通过app.post()方法发送和接收。 所以说如果我这样做: console.log(req.body.testData) ,输出将是Some test data ,所以那里没有问题。 问题在于res.render()函数,如果POST请求是通过$.post或通过AJAX $.ajax ,它根本不起作用。 res.render()函数不会通过$.post或$.ajax发出的POST请求执行或呈现页面。 奇怪的是,如果通过表单执行相同的POST请求(我不希望在我的应用程序中执行,因为POST请求不应该发送从输入接收的数据),使用EXACT相同的app.post()路由处理程序表达完美。 例如,使用类似下面的表单工作并允许res.render()显示页面,而$.post()和$.ajax方法不允许。 为什么会这样? Submit 我发现StackOverflow上的另一个问题与我的非常相似,但除了表单选项(我不能使用)之外没有明确的解决方法: Express.js不会在Post Action中渲染 […]

来自快递js的Ajax发布响应不断抛出错误

我很难站起来从html页面到我的node.js应用程序的双向数据传输,然后回到html页面。 我很确定我已经完成了正确的解决方案,但我只是没有让它发挥作用。 我在我的node.js应用程序中使用以下内容: var express = require(‘/usr/lib/node_modules/express’); var app = express(); app.use(function(err, req, res, next){ console.error(err.stack); res.send(500, ‘Something broke!’); }); app.use(express.bodyParser()); app.post(‘/namegame’, function(req, res) { console.log(‘Got request name: ‘ + req.body.name); setTimeout(function() { var newName = “New Name-O”; res.send({name: newName}); }, 2000); } ); app.listen(8088, function() { console.log(“Server is up and running”); }); 以下是我的html页面: // […]

Node.js使用AJAX将数据发送到后端

我对AJAX很陌生,对于潜在的误解感到遗憾,但我并没有完全理解这件事。 我正在尝试一件简单的事情。 我有一个server.js文件,基本上是我的后端。 然后我有一个index.html和一个script.js 。 这就是全部,所以这是一个非常基本的设置。 现在,在我的script.js ,我得到了一些数据(邮件地址)。 现在我想将数据发送到我的后端(进入server.js )以便在那里使用它。 我怎样才能做到这一点? 我在node.js上找到了一些关于AJAX的post,但是我没有得到它,特别是在后端接收它的地方。 顺便说一句,我正在为服务器使用express。 我在script.js是: $.ajax({ type: “POST”, url: “server.js”, data: { mail: mail }, success: function(data) { }, error: function(jqXHR, textStatus, err) { alert(‘text status ‘+textStatus+’, err ‘+err) } }); 到目前为止? 我现在如何在server.js收到信息? 到目前为止没有多少,只是: var express = require(‘express’); var app = express(); var server = app.listen(3000); […]