【问题标题】:Why is my AJAX request failing?为什么我的 AJAX 请求失败?
【发布时间】:2015-09-14 06:58:01
【问题描述】:

我正在尝试学习在 Rails 中使用 AJAX。

这是我的客户端咖啡脚本代码:

$(document).ready ->
  $("#url").blur ->
    $.get("/test_url?url=" + $(this).val(), (data) ->
      alert("Response code: " + data)
    ).fail( () ->
      alert("Why am I failing?")
    )

这是我的服务器端 Ruby 代码:

  def url_response
    url = URI.parse(params[:url])
    Net::HTTP.get_response(url).code unless url.port.nil?
  end

正在调用 Ruby 代码并正确返回 HTTP 响应代码,但我无法对数据执行任何操作,因为客户端脚本说调用失败。据我所知,它并没有失败。 url_response 正在被调用并且它正在返回一个值,那么到底是什么失败了?

【问题讨论】:

  • 您的 rails 应用程序的 development.log 是怎么说的?可以直接在浏览器中打开同一个 URL(不用 Ajax)吗?
  • 我之前可以在浏览器中打开 URL 并获得结果,但是我忘记了我之后更改了代码,当我回去检查时发现我也无法打开 URL .我修复了 url_response 方法来渲染结果,它工作了!感谢 Fredrick 的提示,它为我指明了正确的方向。

标签: ruby ajax coffeescript


【解决方案1】:

问题是我删除了呈现响应的行。我之前有过,但是感谢 Frederick Cheung 提示要检查 URL 是否直接在浏览器中工作,我意识到它不再像以前那样在浏览器中工作,这就是为什么我没有想再次检查的原因!

下面的代码让一切恢复正常。

  def url_response
    url = URI.parse(params[:url])
    render :text => Net::HTTP.get_response(url).code unless url.port.nil?
  end

【讨论】: