0

我正在构建一个 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'

谢谢

4

2 回答 2

3

它是 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
于 2012-05-26T08:27:15.287 回答
0

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

于 2012-05-25T15:07:21.453 回答