Tom*_*man 7 ajax internet-explorer content-type ruby-on-rails
这是我的控制器操作中的常见模式:
respond_to do |format|
format.html {}
format.js {
render :layout => false
}
end
Run Code Online (Sandbox Code Playgroud)
即,如果请求是非AJAX,我将在一个全新的页面上以布局发送HTML内容.如果请求是 AJAX,我将发送相同的内容,但没有布局(以便它可以插入现有页面或放入灯箱或其他).
所以我总是在format.js部分中返回HTML ,但Rails将Content-Type响应头设置为text/javascript.这会导致IE抛出这个有趣的小错误消息:
当然,我每次都可以设置响应的内容类型(或使用after_filter或者其他),但似乎我正在尝试做一些相对标准的事情,我不想添加额外的样板代码.
我该如何解决这个问题?或者,如果解决问题的唯一方法是更改响应的内容类型,那么实现我想要的行为的最佳方式是什么(即,向下发送非AJAX布局的内容以及没有布局的相同内容对于AJAX)而不必处理这些错误?
编辑: 此博客文章有更多信息
这对你有用吗?
respond_to do |format|
format.html { :layout => false if request.xhr? }
format.js {}
end
Run Code Online (Sandbox Code Playgroud)
然后将响应称为HTML,而不是JS(我还没有测试过.)
基本上,request.xhr?是这个解决方案的关键
| 归档时间: |
|
| 查看次数: |
2828 次 |
| 最近记录: |