服务器端我得到了:
var express = require('express');
var router = express.Router();
var qr = require('qr-image');
router.get('/qrimage/:text', function(req,res){
var code = qr.image(req.params.text, { type: 'png'});
res.setHeader('Content-type', 'image/png');
res.pipe(code);
res.end();
});
客户端使用jQuery:
var thisUserName = 'bobby';
$.get('/users/qrimage/'+ thisUserName);
var img = $("<img />").attr('src', 'users/qrimage/'+ thisUserName).load(function() {
$("#qrim").replaceWith(img);
});
当您单击链接时,将执行客户端代码。 我的问题是浏览器得到的东西,但图像没有正确显示。
单击控制台:
GET /users/qrimage/bobby 200 67.484 ms - -
答案 0 :(得分:1)
qr.image()
返回一个可读流。您试图将响应传递给它,而不是相反。试试这个:
router.get('/qrimage/:text', function(req,res){
var code = qr.image(req.params.text, { type: 'png'});
res.setHeader('Content-Type', 'image/png');
code.pipe(res);
});
答案 1 :(得分:0)
运行done
后,您需要将DOM操作代码移动到$.get()
块中。
var thisUserName = 'bobby';
$.get('/users/qrimage/'+ thisUserName)
.done(function(data) {
// data will be the result of the server code.
})
.fail(function() {
// something went wrong
});
另外,正如mscdex指出的那样,你的管道和流向后记录了。