【问题标题】:Rails and jQuery Ajax (POST) - error responseRails 和 jQuery Ajax (POST) - 错误响应
【发布时间】:2012-05-25 14:52:35
【问题描述】:

我正在构建一个 Rails 应用程序,并且正在尝试使用 jQuery 进行 AJAX 调用。当我执行 AJAX 调用 (POST) 时,我收到来自我的方法的错误。但我不知道问题是什么:(

当我使用“GET”方法时一切正常,但是当我将其更改为“POST”时,我收到了错误(是的,我更改了 route.rb :))

jQuery

$.ajax({
  url: "/login/checkLogin/",
  dataType: "json",
  data: data,
  type: 'post',
}).done(function(response){
  console.log(response);
})

方法

ldap = Net::LDAP.new
ldap.host = "***"
ldap.port = ***
ldap.auth %[#{params[:login_username]}], params[:login_password]

if ldap.bind
 session['loggedin'] = true
 respond_with "1".to_json
else
 session['loggedin'] = false
 respond_with "0".to_json
end

错误消息(来自控制台)

undefined method `"0"_url'

谢谢

【问题讨论】:

    标签: jquery ruby-on-rails ruby ajax post


    【解决方案1】:

    这是 Rails 魔法的背后 :) 默认情况下,Rails 使用ActionController::Responder 来处理 respond_with 如果没有给出块或模板不可用。对于 'POST' 方法(REST 'create')和 xml 和 json 等非 html 格式,它会生成包含编码资源、状态代码 (:success) 和资源位置的响应。所以它会尝试找出你传递的资源的 URI,并在这一步失败。

    只需通过 :location => nil 选项覆盖默认值,或使用显式 respond_to

    respond_with "0".to_json, :location => nil
    

    respond_to do |format|
      format.json {render :json => "0".to_json}
    end
    

    【讨论】:

      【解决方案2】:

      尝试将contentType: "application/json; charset=utf-8", 用于$.ajax({...})

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-03
        • 1970-01-01
        • 2022-01-24
        • 2013-05-03
        • 1970-01-01
        • 1970-01-01
        • 2014-09-28
        • 1970-01-01
        相关资源
        最近更新 更多