尝试扫描QR码然后调用API

时间:2019-04-18 11:00:11

标签: javascript qr-code

我正在尝试创建一个移动应用,用户将在其中扫描唯一的QR码,然后程序应执行检查以确保扫描了正确的QR码(而不是随机的QR码),并且正确的QR扫描代码应调用API。我找到了一个适用于https://www.sitepoint.com/create-qr-code-reader-mobile-website/手机上的javascript qr扫描仪。通过访问设备的相机并扫描QR码,所有这些工作都非常完美,但是我在如何检查已扫描的正确QR码方面苦苦挣扎。为了测试“正确的” QR码,它只是将其转换为字符串“ hello”。

我尝试使用alert(res)查找QR解码点。当我尝试使用if语句将解码后的QR与等同于“ hello”的变量进行比较时,QR扫描器将停止工作。

完整代码可在https://www.sitepoint.com/create-qr-code-reader-mobile-website/

查看

这是解码QR图像的部分。

function openQRCamera(node) {
  var reader = new FileReader();
  reader.onload = function() {
    node.value = "";
    qrcode.callback = function(res) {
      if(res instanceof Error) {
        alert("No QR code found. Please make sure the QR code is within the camera's frame and try again.");
      } else {
        node.parentNode.previousElementSibling.value = res;      }
        alert(res)
    };
    qrcode.decode(reader.result);
  };
  reader.readAsDataURL(node.files[0]);
}

我说Alert(res)的部分是我认为QR图像被解码的地方,我尝试过各种如果语句无法使它起作用的情况,那么任何人都可以帮忙。

1 个答案:

答案 0 :(得分:1)

使用来自sitepoint.com的以上链接,并按照本教程进行操作,我没有遇到返回响应的任何问题。尝试检查它是否像这样工作:

function openQRCamera(node) {
  var reader = new FileReader();
  reader.onload = function() {
    node.value = "";
    qrcode.callback = function(res) {
      if(res instanceof Error) {
        alert("Failed to scan QR code.");
      } else {
        console.log("Scanned new code: " + res.trim());
        if (res.trim() === "hello") {
          alert("Correct code!");
        } else {
          alert("Incorrect code!");
        }
      }
    };
    qrcode.decode(reader.result);
  };
  reader.readAsDataURL(node.files[0]);
}

function showQRIntro() {
  return confirm("Please scan the code");
}

我用这个image作为正确代码的示例,this image作为不正确代码的示例。

希望一切能够清除,祝你好运:)