2016-06-26 10 views
0

我的网页是能够得到阿贾克斯的数据用下面的代码如何在我读的NodeJS AJAX数据快递服务器

$.ajax({ 
       type: 'POST', 
       url: "/get_cache_transactions", 
       async: true, 
       data: 
        JSON.stringify({ 
         a: 11, 
         b: 22, 
         c: 33 
       }), 
       dataType: 'json', 
       contentType: 'application/json; charset=utf-8', 
       success: function (data) { process_cache_changes(data) }, 
       error: function (xhr, ajaxOptions, thrownError) { } 
      }) 

但节点Express服务器上无法读取参数,b或c来自网页。

的表达的NodeJS代码如下

var express = require('express'); 

var app = express(); 

var handlebars = require('express-handlebars').create({ defaultLayout: 'main' }); 

app.engine('handlebars', handlebars.engine); 
app.set('view engine', 'handlebars'); 

app.use(require('body-parser').urlencoded({ extended: true })); 

app.post('/get_cache_transactions', function (req, res) { 
    console.log("************************************************************************************************") 

>>> how to I get value of a, b, c ????? 


    res.setHeader('Content-Type', 'application/json'); 
    res.send(JSON.stringify(pic_cache.cache, null, 2)); 
}); 

我尝试打印出所有REQ并没有什么的属性似乎包含,b或c。我试图看待req.body,再一次没有。

for (i in req.body){console.log(i)} 

而且,我对这个项目的依赖关系是

"dependencies": { 
    "body-parser": "^1.15.1", 
    "cookie-parser": "^1.4.3", 
    "express": "^4.13.4", 
    "express-handlebars": "^2.0.1", 
    "express-session": "^1.13.0", 
    "formidable": "^1.0.17", 
    "fs": "0.0.2", 
    "parseurl": "^1.3.1" 
    }, 
在Chrome调试器(F12)

,我选择网络,看看后

General 
Request URL:http://localhost:1662/get_cache_transactions 
Request Method:POST 
Status Code:200 OK 
Remote Address:[::1]:1662 
Response Headers 
view source 

Response Headers 
Connection:keep-alive 
Content-Length:631 
Content-Type:application/json; charset=utf-8 
Date:Sun, 26 Jun 2016 20:31:40 GMT 
ETag:W/"277-PiWC2Y6iMvjEI1tGjkMrcw" 
Request Headers 
view source 

Request Headers 
Accept:application/json, text/javascript, */*; q=0.01 
Accept-Encoding:gzip, deflate 
Accept-Language:en-US,en;q=0.8 
Connection:keep-alive 
Content-Length:22 
Content-Type:application/json; charset=UTF-8 
Cookie:connect.sid=s%3AOgJ3NCHzZpte0fSsxdLRDHK6Dggql1nC.entV9uoy%2BAHG5C3rNmt%2BrzdbZ9RDwDr%2B2FAqdx5%2BZKk 
Host:localhost:1662 
Origin:http://localhost:1662 
Referer:http://localhost:1662/ 
User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36 
X-Requested-With:XMLHttpRequest 

Request Payload 
view source 
{a: 11, b: 22, c: 33} 
a 
: 
11 
b 
: 
22 
c 
: 
33 

因此,我们知道以下a,b,c正在发送。

+0

尝试删除您的AJAX的'JSON.stringify'并获得'A,B,用'req.body C'参数.a,req.body.b和req.body.c' – danilodeveloper

+0

试图删除stringify,但仍然没有定义req.body.a – grabbag

回答

1

您JSON格式发送数据。尝试下面的代码片段使用身体解析器中间件&访问所需的值

var bodyParser = require('body-parser'); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({extended: false})); 

app.post('/get_cache_transactions', function (req, res) { 
    var a = req.body.a; 
    var b = req.body.b; 
    var c = req.body.c; 

    //Rest of the code 
}) 
+0

@grabbag你可以请你分享你修改后的服务器端代码 –

+0

在客户端代码中指定dataType就足够了。 contentType不是必需的。通过检查浏览器的开发人员工具中的请求,确保请求正常。 –

+0

是的,这是有效的。谢谢。 我没有注意到需要加载多个分析器。 – grabbag

0

客户

$.ajax({ 
    type: 'POST', 
    url: "/get_cache_transactions", 
    data: { 
     a: 11, 
     b: 22, 
     c: 33 
    }, 
    dataType: 'json', 
    success: function (successResponse) { }, 
    error: function (errorResponse) { } 
}); 

服务器

app.post('/get_cache_transactions', function (req, res) { 
    var a = req.body.a; // same for b and c 
    res.json(pic_cache.cache); 
}); 
+0

感谢您的建议。我试过这个,但没有奏效。我仍然没有定义req.body.a。 – grabbag

+0

这绝对应该工作,创建新的测试应用程序,并确认它不工作要么 –

相关问题