验证码onload / document.ready问题

时间:2012-09-14 16:11:02

标签: jquery captcha

我正在设计一个包含验证码的表单。

我决定与Solve Media合作提供此功能,因为它们可以从CAPTCHA代码中获得潜在收入(请参阅http://www.solvemedia.com/publishers/captcha-type-in)。

但是,我的代码存在问题,无法显示'

以下代码有效(使用body onload =" function"

    <html><head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {

    $.getScript("https://api-secure.solvemedia.com/papi/challenge.ajax", function() {
    });

});
function showPuzzle(){
    ACPuzzle.create('v3IzWqCqSh23kq5PnRSbVZrYwWlRYBL-', 'acwidget', { lang: 'en', size: 'standard' });      
}   

function submitButton(){
var user_challenge = document.getElementById('adcopy_challenge').value;
var user_response = document.getElementById('adcopy_response').value;



$.ajax({ url: 'libs/shared-functions.php',
    data: {action:'solveCaptchaCode',challenge:user_challenge, response:user_response},
    type: 'post',
    success: function (output) {
        alert(output);
        console.log(output);
    }
});}
    </script>
    </head>
    <body onload="showPuzzle();">
    Puzzle: <br />
    <div id="acwidget"></div>

      <br />  <br />  <br />  <br />
      <button onclick="submitButton()">Submit</button>
    </body>
    </html>

然而,当我删除tage

    <body onload="showPuzzle();">

并将.ready函数更改为

    $(document).ready(function() {

    $.getScript("https://api-secure.solvemedia.com/papi/challenge.ajax", function() {
        showPuzzle();
    });

});

错误&#39; ReferenceError:无法找到变量:ACPuzzle&#39;发生。 我已将失败的代码上传到:http://jsfiddle.net/Mhpmf/

是否有人知道此问题的任何解决方案?

我需要创建在.ready函数内创建拼图的请求,以便与现有代码集成。

提前致谢

2 个答案:

答案 0 :(得分:1)

您可以使用:

window.onload = function() {
    $.getScript("https://api-secure.solvemedia.com/papi/challenge.ajax", function() {
        showPuzzle();
    });
}

答案 1 :(得分:0)

正如@Zathrus Writer正确地说的那样,

window.onload = function(){...}有效。