Rails:用js响应Ajax请求

时间:2017-08-13 07:24:23

标签: javascript ruby-on-rails ajax ruby-on-rails-5 respond-to

当使用ajax请求从rails控制器操作获取响应时,我遇到了一些奇怪的行为。

$.ajax({
    type: 'GET',
    url: '/notifications',
    success: function(result) {
        eval(result);
    }
});
def index
    respond_to do |format|
        format.html { redirect_to root_url, alert: 'Page not accessible' }
        format.js
    end
end

因此,当使用带有rails的请求时,此respond_to块工作正常。 remote: true选项,但通过ajax调用,它只是将请求重定向到root_url

json指定为Ajax请求的dataType时。这样返回JavaScript就好了,但由于它无效jsoneval()不会运行它。

是否有办法从JavaScript中启动rails远程请求或指定返回的JavaScript可执行的数据类型?

即使在ajax调用中指定dataType: 'text/javascript',也不行。

1 个答案:

答案 0 :(得分:3)

  

所以当使用带有rails的请求时,这个respond_to块工作正常   remote:true选项,但是使用ajax调用它只是重定向   请求root_url

因此,来到控制器的请求格式为HTML而不是JS。使用dataType: 'script'生成请求JS并应解决您的问题。

$.ajax({
  type: 'GET',
  dataType: 'script',
  url: '/notifications'
});