在使用image_captcha_refresh刷新captcha模块提供的校验码时,发现无法刷新(原生主题中使用不存在该问题)。经调试,发现是js执行没有成功。image_captcha_refresh.js的代码如下:

Drupal.behaviors.imageCaptchaRefresh = function (context) {
  $('.reload-captcha', context).not('.processed').bind('click', function () {
    $(this).addClass('processed');
    var $form = $(this).parents('form');
    // send post query for getting new captcha data
    var date = new Date();
    var url = this.href + '?' + date.getTime();
    $.get(
      url,
      {},
      function (response) {
        if (response.status == 1) {
          $('.captcha', $form).find('img').attr('src', response.data.url);
          $('input[name=captcha_sid]', $form).val(response.data.sid);
          $('input[name=captcha_token]', $form).val(response.data.token);
        }
        else {
          alert(response.message);
        }
      },
      'json'
    );
    return false;
  });
};

通过firefox中的firebug插件看到,执行这个js后服务端有jason数据的返回,但是在$.get()中,却认为响应没有成功。最后将'json'去掉,才认为成功,但是返回的response为字符串。新增response=eval("("+response+")"); 则可以成功实现验证码的刷新了。
 

Tags: , ,

发表回复

机器人检查 *

分享我的最新文章标题到这里

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据