4

在使用 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

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

从 Ajax 请求开始指定jsondataType。so 返回 JavaScript 就好了,但因为它无效jsoneval()所以不运行它。

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


即使dataType: 'text/javascript',在 ajax 调用中指定也不能解决问题。

4

1 回答 1

4

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

所以到达控制器的请求格式HTML不是JS. 使用dataType: 'script'会生成请求,JS并且应该可以解决您的问题。

$.ajax({
  type: 'GET',
  dataType: 'script',
  url: '/notifications'
});
于 2017-08-13T08:29:20.827 回答