当使用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就好了,但由于它无效json
,eval()
不会运行它。
是否有办法从JavaScript中启动rails远程请求或指定返回的JavaScript可执行的数据类型?
即使在ajax调用中指定dataType: 'text/javascript',
也不行。
答案 0 :(得分:3)
所以当使用带有rails的请求时,这个respond_to块工作正常 remote:true选项,但是使用ajax调用它只是重定向 请求root_url
因此,来到控制器的请求格式为HTML
而不是JS
。使用dataType: 'script'
生成请求JS
并应解决您的问题。
$.ajax({
type: 'GET',
dataType: 'script',
url: '/notifications'
});