我有一个post函数,它从视图中获取一些信息,并将处理后的值存储在函数范围内声明的变量中
router.post('/searchbook', function(req, res, next){
var s_book_name="n/a";
var s_author_name="n/a";
var s_isbn13_id="n/a";
var isbn=req.body.isbn;
var url="http://isbndb.com/api/v2/json/63JEP95R/book/"+isbn;
request({
url: url,
json: true
}, function (error, response, body) {
if (!error && body.data!=null && response.statusCode === 200) {
if(body.data[0].title!=null)
s_book_name=body.data[0].title;
if(body.data[0].author_data[0]!=null)
s_author_name=body.data[0].author_data[0].name;
if(body.data[0].isbn13!=null)
s_isbn13_id=isbn;
}
else
{ error="Book not found. Please enter the information manually.";
res.redirect('/newbook');
}
}).then(function() {
res.redirect('/newbook2');
});
});
现在我有一个get函数,应该将此信息发送到另一个视图。
router.get('/newbook2', function(req, res){
res.render('newbook2', {title: 'Add New Book',s_book: s_book_name, s_author: s_author_name, s_isbn13: s_isbn13_id ,s_publisher: s_publisher_name , s_category: s_category_id});
});
但视图中的信息始终显示为未定义。我相信get函数中使用的值超出了范围。我应该使用全局变量吗?还有另一种方法吗?
答案 0 :(得分:2)
您应该使用app#locals在整个应用中设置变量。
或者您可以使用查询字符串参数传递数据并使用
访问它没有expressJs
var url = require('url');
http.createServer(function(req,res){
var url_parts = url.parse(req.url, true);
var query = url_parts.query;
console.log(query); //
})
使用expressJS,您可以使用req#query
app.get('/path',function(req,resp){
req.query // get querystring
})