2014-08-31 97 views
0

在以下ajax请求中,我正在向节点服务器发送一个请求,请求名称为fileName的文件。Jquery未显示Ajax数据

阿贾克斯

$.ajax({ 
    type: "POST", 
    data: {'imageFileName': fileName}, 
    contentType: "json", 
    url: '/myRoute', 
    success: function(data){ 
     if(!data){ 
      errorMessage(); 
     } 
     else{ 
      display(data); 
     } 
    } 
}) 

路由器

router.post('/myRoute', function(req, res){ 
    console.log(req.imageFileName) //Undefined 
    res.end(); 
}) 

然而,当我登录服务器端的请求,我得到没有fileName一个巨大的物体。鉴于该请求被命名为req,req.imageFileName产生未定义。我做错了什么,我不能在服务器端访问fileName

+0

你想发送文件还是只是文件名? – hjpotter92 2014-08-31 20:50:53

+0

只是文件名。 – goodcow 2014-08-31 20:52:59

+1

我认为'contentType'应该是'application/json'而不只是'json',它是一个MIME类型。 – keeshux 2014-08-31 20:59:36

回答

0

尝试删除数据中的报价。还要交叉检查一次c文件名中的内容。

$.ajax({ 
    type: "POST", 
    data: {imageFileName: fileName}, 
    contentType: "json", 
    url: '/myRoute', 
    success: function(data){ 
     if(!data){ 
      errorMessage(); 
     } 
     else{ 
      display(data); 
     } 
    } 
}) 

http://api.jquery.com/jquery.ajax/

+0

引号没有区别,名称正确。 – goodcow 2014-08-31 21:05:04

0

尝试以下操作:

$.ajax({ 
type: "POST", 
data: {'imageFileName': fileName}, 
url: '/myRoute', 
success: function(data){ 
    if(!data){ 
     errorMessage(); 
    } 
    else{ 
     display(data); 
    } 
} 
}) 

服务器端

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

我想看看它的内容类型这就是给你的麻烦。

+0

我有'app.use(bodyParser.json()); app.use(bodyParser.urlencoded());'我app.js. – goodcow 2014-08-31 21:04:47

+0

Nope不行,谢谢你的建议。 – goodcow 2014-08-31 21:09:50

+0

你可以试试这个吗?我想看看它是否给你带来麻烦的内容类型 – SivaDotRender 2014-08-31 21:25:27

0

标签位于body-parser提供的请求的body中。因此,这工作。

router.post('/myRoute', function(req, res){ 
    console.log(req.body.imageFileName) //Correct 
    res.end(); 
})