Nodejs - qr图像没有正确加载

时间:2015-05-25 21:02:28

标签: javascript node.js

我使用了这个问题的答案 Nodejs - How to show qr-image result in view

服务器端我得到了:

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 - -

2 个答案:

答案 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指出的那样,你的管道和流向后记录了。