5 月
10
在使用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: drupal, image_captcha_refresh, js