还是先说说问题的起因吧,
问题:登陆刷新验证码.(django)
身为jquery白痴的我,写下了以下这段代码:
function clickname(){
var $form, url;
//$form = $(this).parents('label');
url = location.protocol + "//" + window.location.hostname + ":" + location.port + "/captcha/refresh/";
return $.getJSON(url, {}, function(json) {
$('#id_captcha_0').val(json.key);
return $('#imgname').children('img').attr('src', json.image_url);
});
}
看不清验证码的时候可单击,重新获取新的验证码.
问题来了,在别的浏览器上都没有问题,可是偏偏到了IE就不行了,很蹊跷,
刚进去页面的时候第一次调用此方法的时候是没问题的,因此,博主判断方法本身是没有问题的;
打开IE调试,发现url,以及json.image_url的值都是有的,但是返回的image_url都是相同的.因此,博主可以判断url很可能没有执行.
且博主注意到,方法报了403.
解决:
$.getJSON()存在缓存问题,如果其调用的url之前曾经调用过的话,回调函数就会直接在缓存里取得想要得值,而不是进入到后台
因此:博主在url中加了一个参数,
url = location.protocol + "//" + window.location.hostname + ":" + location.port + "/captcha/refresh?ra="+new Date().getTime();
这样,每次生成的url就不一样,在缓存中找不着,因为就会每次执行.生成新的验证码
参考:http://www.jb51.net/article/35139.htm
问题:登陆刷新验证码.(django)
身为jquery白痴的我,写下了以下这段代码:
function clickname(){
}
看不清验证码的时候可单击,重新获取新的验证码.
问题来了,在别的浏览器上都没有问题,可是偏偏到了IE就不行了,很蹊跷,
刚进去页面的时候第一次调用此方法的时候是没问题的,因此,博主判断方法本身是没有问题的;
打开IE调试,发现url,以及json.image_url的值都是有的,但是返回的image_url都是相同的.因此,博主可以判断url很可能没有执行.
且博主注意到,方法报了403.
解决:
$.getJSON()存在缓存问题,如果其调用的url之前曾经调用过的话,回调函数就会直接在缓存里取得想要得值,而不是进入到后台
因此:博主在url中加了一个参数,
url = location.protocol + "//" + window.location.hostname + ":" + location.port + "/captcha/refresh?ra="+new Date().getTime();
这样,每次生成的url就不一样,在缓存中找不着,因为就会每次执行.生成新的验证码
参考:http://www.jb51.net/article/35139.htm