最近,我在我的项目中使用easy_captcha
(https://github.com/phatworx/easy_captcha)。
我有一个注册页面,并且在此页面中放置了验证码,当用户输入用户名时,如果此用户名之前已经过注册,我将发送ajax post
请求进行升级。
但是当我提交表格时,我被告知验证码已经过时了。
我发现,当我发送帖子请求时,验证码会刷新,但为什么?我该怎么办?我不能让用户再次手动刷新验证码以提交注册表单。
答案 0 :(得分:0)
您应该在ajax请求后重新加载验证码标签。尝试重新加载控制器中的验证码,并在提交ajax请求时将其传回。在提交真实内容之前,你基本上是在刷新验证码。
在您的控制器中:
respond_to do |format|
render :json =>{:captcha =>"<p>#{valid_captcha?(params[:captcha]) ? 'valid' : 'invalid' } captcha</p>"}
end
然后将html设置为
$.post( "ajax/test.html", function( data ) {
$( ".result" ).html( data['captcha'] );
});
虽然没有代码可以提供一个很好的例子