【问题标题】:How to send json response from controller to jQuery and inspect it?如何将 json 响应从控制器发送到 jQuery 并检查它?
【发布时间】:2012-09-12 06:55:20
【问题描述】:

我有这个问题:我正在检查控制器中的用户电子邮件并成功发送 json 响应(如果它已被占用)并添加输入的 css 样式,我还需要阻止提交并添加一些消息。

这是我的 checkemail 操作(使用这篇文章 - http://paydrotalks.com/posts/45-standard-json-response-for-rails-and-jquery):

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

在我的路线中:

         checkemail GET    /checkemail(.:format)

          match "/checkemail", to: 'edit_user#checkemail'

还有我的 jQuery:

   $('#user_email').focusout(function() {
    $.getJSON('/checkemail', { email: $('#user_email').val() }, function(data) {
        $('#user_email').addClass("error");
      });
   });

我的 HTML 输入代码:

     <input id="user_email" name="user[email]" size="30" type="email" value="">

来自 mime_type 初始化文件:

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

来自 Fiddler:

  Request : GET /checkemail?user@mail.com HTTP/2.0

  Response(RAW tab) : 
  Missing template edit_user/checkemail

  JSON tab is empty

问题:如何检查是否发送了 json 请求?如何防止提交表单并添加一些消息?

【问题讨论】:

  • @KyorCode,我不太擅长。我怎样才能在那里添加红宝石动作?
  • 我假设您在本地主机上运行,​​使用“composer”来定位您的地址并相应地更改您的标题、操作类型(GET、POST、PUT)和正文,有足够的例子在那里。在你我认为的情况下:localhost/checkemail
  • @KyorCode,你是指 Fiddler 还是 jsfiddler ?我以前从未使用过提琴手。
  • Fiddler,是时候试验一下了。调试 web 服务端点功能非常方便
  • @KyorCode,他们的视频是有用的还是最好找例子?

标签: jquery ruby-on-rails json response


【解决方案1】:

为什么是format.jsonr?对我来说似乎是一个错字。

【讨论】:

  • 我从这里拿的 - paydrotalks.com/posts/…
  • 您是完全按照博客帖子进行操作,还是使用 gem?因为jsonr(或jsm,如果你使用gem)不是rails的标准,你必须添加对它的支持。
  • 这没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
  • @ksol,我将 MimeType 添加到初始化程序文件中。还不够吗?
  • @Marijn:如果这是一个错字,它可能是答案。 @MID:如果您更改/添加/删除了初始化程序,则需要重新启动服务器。否则,我建议在您的操作中使用debuggerpry,以检查参数。
猜你喜欢
  • 2015-10-19
  • 1970-01-01
  • 2012-01-29
  • 2012-07-27
  • 2018-01-15
  • 1970-01-01
  • 2014-09-21
  • 1970-01-01
相关资源
最近更新 更多