【发布时间】:2016-06-03 14:28:07
【问题描述】:
我正在尝试使用 ajax 验证表单中电子邮件地址的唯一性,但我不知道如何使用 jquery 访问 JSON 数据。
到目前为止,当用户输入电子邮件地址时(当前在 keyup 上),输入将被发送到控制器并返回 JSON 数据,其中包含变量 {"email_exists":true} 或 {"email_exists":false},具体取决于电子邮件地址是否以前是否保存到数据库。这可以正常工作。
我正在使用 jquery 来验证表单提交时的其他表单功能(电子邮件验证、字段存在),并根据问题动态显示错误。
我的问题是我不知道如何使用 jquery 访问返回的 JSON 数据。我也在努力使用 erb 访问它,<%= p params[:email_exists] %> 什么也没显示。我是 JSON 新手,如有任何帮助,将不胜感激,谢谢。
编辑:这就是我验证电子邮件地址的方式。
new.html.erb
$("#comingsoon_email").on('change keyup paste',function(){
console.log("change?");
$.post('/checkemail?email='+$("#comingsoon_email").val(),function(data){
routes.rb
post '/checkemail', to: 'comingsoons#emailcheck'
comingsoons_controller.rb
def emailcheck
@comingsoon = Comingsoon.search(params[:email])
respond_to do |format|
format.json {render :json => {email_exists: @comingsoon.present?}}
end
end
即将到来的.rb
def self.search(email)
if email
where('email = ?',email).first
end
end
JSON 返回
{"email_exists":true} 或 {"email_exists":false} 取决于电子邮件地址之前是否已保存到数据库中。
如果电子邮件地址已被占用,我想通过 jquery 显示错误消息。
【问题讨论】:
-
如果你通过 Ajax 进行验证,那么你应该在你的回调函数中做一些事情(或者 promise/future/etc,如果这是你所采取的路线)。
-
我不确定我是否关注你。生病将我当前的代码添加到我的问题中,也许它会解决问题。
-
你调用服务器。该调用(可能使用
$.ajax或$.post或其他)具有成功和失败回调。在这些回调中,您可以访问数据。你可能想退后一步,在 JS 调试器中设置一个断点,看看这些回调的参数是什么。
标签: jquery ruby-on-rails json ajax