Javascript 尝试使用php函数生成的随机值自动生成QR码

Javascript 尝试使用php函数生成的随机值自动生成QR码,javascript,php,html,Javascript,Php,Html,您好,这是我的代码工作良好,当您键入文本时,它会转换为二维码,但我想使其自动。我有一个php函数,它生成随机数,所以qrcode应该由该函数的值生成,而不是键入文本 这是我的html页面代码: <!DOCTYPE html> <body> <input id="text" type="text" value="http" style="width:80%" /><br /> <div id="qrcode"></di

您好,这是我的代码工作良好,当您键入文本时,它会转换为二维码,但我想使其自动。我有一个php函数,它生成随机数,所以qrcode应该由该函数的值生成,而不是键入文本

这是我的html页面代码:

    <!DOCTYPE html>
<body>
  <input id="text" type="text" value="http" style="width:80%" /><br />
<div id="qrcode"></div>
  <script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
<script src='http://davidshimjs.github.com/qrcodejs/qrcode.min.js'></script>

    <script src="js/index.js"></script>

</body>
</html>


这是我的javascript函数:

var qrcode = new QRCode("qrcode");

function makeCode () {      
    var elText = <?php echo random_str(6); ?> ;

    if (!elText.value) {
        alert("Input a text");
        elText.focus();
        return;
    }

    qrcode.makeCode(elText.value);

}

makeCode();

$("#text").
    on("blur", function () {
        makeCode();
    }).
    on("keydown", function (e) {
        if (e.keyCode == 13) {
            makeCode();
        }
    });
var qrcode=新的qrcode(“qrcode”);
函数makeCode(){
var-elText=;
如果(!elText.value){
警报(“输入文本”);
elText.focus();
返回;
}
qrcode.makeCode(elText.value);
}
makeCode();
$(“#文本”)。
关于(“模糊”,函数(){
makeCode();
}).
开启(“按键按下”,功能(e){
如果(e.keyCode==13){
makeCode();
}
});
这是我想要实现的php函数,这样会生成一个随机数,并在此基础上形成qrcode

<?php

function random_str($length, $keyspace = '0123456789')
{
    $str = '';
    $max = mb_strlen($keyspace, '8bit') - 1;
    for ($i = 0; $i < $length; ++$i) {
        $str .= $keyspace[random_int(0, $max)];
    }
  return $str;
}

?>

使用基于输入的版本时,您编写了makeCode()函数,以从输入框中提取QRCode的值。现在您使用的是文本值,您需要修改makeCode(),以了解它如何与源代码一起工作——现在是javascript文本值,而不是控件

function makeCode () {      
    var elText = "<?php echo random_str(6); ?>" ; // note quotes around random no.

    if (elText.length === 0) { // is the random string zero length 
        alert("Random number is blank - weird !");
        return;
    }

    qrcode.makeCode(elText);

}
函数makeCode(){
var elText=”“;//注意随机编号周围的引号。
如果(elText.length==0){//是随机字符串的零长度
警报(“随机数为空-怪异!”);
返回;
}
qrcode.makeCode(elText);
}

php中随机数周围的引号将保护您免受返回空白的风险。我不知道这种可能性有多大,但如果真的发生了,JS就会失败。因为它没有数字运算,我们可以把它当作一个字符串。在这种情况下,我们可以测试它的长度,并从中决定是否需要生成QRCode。

这取决于html的呈现方式

1-如果它来自php,并且您可以在同一个文件中调用该函数,或者可以从该php文件调用该函数,那么您可以执行以下操作:

<script>
var qrcode = new QRCode("qrcode");
qrcode.makeCode('<?php echo random_str(3); ?>');
</script>

var qrcode=新qrcode(“qrcode”);
qrcode.makeCode(“”);

2-如果它是一个html文件,你不能调用函数,你可以使用ajax调用一个php文件,该文件给你随机值并使用它

现在我的二维码生成了,但是文本Lol-这就是进展!我不是php专家,php似乎没有意识到它是用来吐出一个数字的。你能把它和你的其他php输出进行比较吗?我做的随机函数运行良好,可以生成数字,但我不知道为什么我不能从这个函数中得到一个数字,我认为从javascript调用php函数是不正确的。我假设您从php生成html和JS,以便php看到random function指令。如何生成输出?不,事实上,起初我用html制作了qrcode生成器,并使用输入生成qrcode,但之后我需要使用php中的随机函数,因此,我只需要从php函数中获取一个数字,并需要使用它来生成qrcode。我的php代码在我的html文件中,但新的qrcode不起作用。很抱歉,我更新了它,您将javascript代码放入html文件中,您可以替换index.js文件。现在正在生成一个代码,但值等于,因此您不使用php文件!!您的文件扩展名是“.php”?我是指显示qrcode的文件,是php文件吗?