0

我有一个奇怪的问题:我正在检查电子邮件是否已经被接收,哪个用户正在输入。

它在简单页面中工作,但是当我尝试在模式上调用它时 - 它不起作用。

这是jQuery:

 $('#user_email').focusout(function() {
  $.getJSON('http://127.0.0.1:3000/checkemail.jsonr', { email: $('#user_email').val() }, function(data) 
    { $('#submit').attr('disabled', 'disabled'); }//disable submit
   );
});

我的 HTML:

        <input id="user_email" name="user[email]" size="30" type="email" value="">
        <input class="btn" id="submit" name="commit" type="submit" value="Create an account">

我的行动和路线:

def checkemail
 respond_to do |format|
   format.jsonr do
    if User.where(email: params[:email]).exists? 
      render :json => {
            :status  => :ok,
            :message => "Success!"
            }.to_json
     end
   end
  end
end

...route...
checkemail        /checkemail

还添加了 mimetype

   Mime::Type.register_alias "application/json", :jsonr, %w( text/x-json )

但正如我在日志中看到的那样,该动作似乎没有调用。但是,所有相同的事情都在其他项目中起作用。

有人能告诉我问题出在哪里吗?

4

2 回答 2

0

不确定您的模态是如何完成的,但您确定您的模态可以访问相关的 jQuery 函数,它是否包含在内?通过粘贴 alert("test"); 来测试 jQuery focusout 函数是否正在运行;或函数中的某些东西。

于 2012-09-12T14:54:31.917 回答
0

如果你愿意,请投票给这个答案,让我拿出 ajax ruby​​ rails 清单。由于它适用于简单页面而不是模式,因此它必须是一个 javascript 问题。

1) 确保您的 jquery 在 $(document).ready() 块中。2) 在 $('#user_email') 上测试你的 jquery 监听器。我不喜欢 alerts() 但使用 console.log("blah");

3) 尝试一个没有 jsonr 响应的简单 ajax 请求?

这就是我要说的。
祝你好运!

于 2012-09-12T16:48:53.183 回答