【发布时间】:2018-01-21 07:45:33
【问题描述】:
我在使用 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 的 remote: true 选项的请求时,此 respond_to 块可以正常工作,但使用 ajax 调用它只会将请求重定向到 root_url。
将json 指定为Ajax 请求的dataType 时。 so 返回 JavaScript 就好了,但因为它无效 json,eval() 不会运行它。
有没有办法从 JavaScript 中启动 Rails 远程请求或指定返回的 JavaScript 可执行的数据类型?
即使在 ajax 调用中指定 dataType: 'text/javascript', 也不起作用。
【问题讨论】:
-
试试
dataType: 'script' -
@jonhue 您是否尝试在您的索引操作中检查
if request.xhr?? -
@pavan 感谢您的建议!等我回家试试看
-
@cnnr 不,我为什么要这样做?
respond_to应该注意这一点。
标签: javascript ruby-on-rails ajax ruby-on-rails-5 respond-to