0

我想通过javascript在captcha.php文件中获取captchaCode.php文件中$security_code的值。我不能在captcha.php文件中包含这个文件。这是 Captcha_code.php 的代码,此代码不包含在此文件的任何函数中:

$captcha = new CaptchaCode();
$security_code = str_encrypt($captcha->generateCode(6));

这是我的javascript函数,通过这个函数我想得到$security的值:

function refresh_captcha()
{
    var img = document.getElementById('captcha_img');
    img.src = '<?php echo "/captcha_images.php"?>';
    jQuery("#captcha_img").attr("src",img.src);
    jQuery("#security_code").val("<?php echo $security_code;?>");
}

实际上,此代码用于在刷新验证码而不刷新页面时获取新的加密值。

4

4 回答 4

1

您必须更改图像源分配相关代码。无需分配 PHP 标签。只需像这样分配 PHP 文件名。

function refresh_captcha()
{
    var img = document.getElementById('captcha_img');
    img.src = '/captcha_images.php';
    jQuery("#captcha_img").attr("src",img.src);
    /*This line will not work without Ajax request*/
    /*jQuery("#security_code").val("<?php echo $security_code;?>");*/
}
于 2013-09-10T07:21:22.890 回答
0

在您的 php 文件 captcha.php 中,

    $captcha = new CaptchaCode();
    $security_code = str_encrypt($captcha->generateCode(6));?>
    <script>
         var code = '<?= $security_code ?>';
    </script><?php // rest of the php codes

在你的 js 文件中

function refresh_captcha()
{
    var img = document.getElementById('captcha_img');
    img.src = code;
    jQuery("#captcha_img").attr("src",img.src);
}
于 2013-09-10T07:22:19.817 回答
0

如果不能包含文件,则需要使用 ajax 请求。

验证码.php

$captcha = new CaptchaCode();
$security_code = str_encrypt($captcha->generateCode(6));
echo json_encode($security_code);

在你的 js 中:

<img src="" id="captcha_img" onclick="refresh_captcha()"/>
<script>

    function refresh_captcha()
{
    $.ajax({
        url : 'captcha.php',
        type : 'POST',
        dataType : 'json',
        success : function (security_code) {
            var source = security_code;
            var img = document.getElementById('captcha_img');
            img.src = source;
            jQuery("#captcha_img").attr("src",img.src);
            jQuery("#security_code").val(source);
        }
    });

}
</script>

img 上的 onclick 事件可能是完全错误的,但出于练习目的,我把它放在那里。

取决于 $security_code 是什么,例如,您可以不使用 JSON。

于 2013-09-10T07:31:54.347 回答
0

向页面发送 ajax 请求以仅输出如下代码:

文件:outputcode.php(仅限演示)

$captcha = new CaptchaCode();
$security_code = str_encrypt($captcha->generateCode(6));
echo $security_code;
exit;

接下来,使用 AJAX 获取该值,例如在 jQuery 中

$("#refresh_code").on('click', function() {
   $.get("outputcode.php", function(data) {
      //data will now hold the new code
   });
});

希望这能给你一个想法。

于 2013-09-10T07:27:20.177 回答