nul*_*ull 9 ajax ruby-on-rails
从JavaScript,我通过AJAX调用控制器,如下所示:
$.ajax({
type: 'GET',
url: '/books'
}
Run Code Online (Sandbox Code Playgroud)
在我的控制器中我有:
def index
render 'lightbox.js.erb'
end
Run Code Online (Sandbox Code Playgroud)
在我的路线中,我有:
resources :books do
member do
get :lightbox
end
end
Run Code Online (Sandbox Code Playgroud)
在lighbox.js.erb我有:
alert("Hello world!");
Run Code Online (Sandbox Code Playgroud)
出于某种原因,警报永远不会被调用.我没有收到任何错误消息,无论是通过服务器还是通过Firebug.我不知道可能出现什么问题.有任何想法吗?
nul*_*ull 23
事实证明,在客户端,我的JavaScript被呈现为文本.我通过查看控制台Feed确认了这一点.它说:
Started GET "/books/lightbox?book=4&username=tbaron&_=1344009191129" for 127.0.0.1 at 2012-08-03 10:53:11 -0500
Processing by BooksController#lightbox as text
Run Code Online (Sandbox Code Playgroud)
最后两个单词应该读作"JS".经过根深蒂固,我发现这个博客文章导致了一个非常简单的解决方案.将"dataType:script"添加到AJAX调用:
$.ajax({
type: 'GET',
url: '/books'
dataType : 'script'
}
Run Code Online (Sandbox Code Playgroud)
谢谢大家的帮助!
我想那是因为你需要打电话books.js
:
$.ajax({
type: 'GET',
url: '/books.js',
success: function(data) {
eval(data);
}
}
Run Code Online (Sandbox Code Playgroud)
在索引操作中:
def index
respond_to do |format|
format.js { render 'lightbox'}
end
end
Run Code Online (Sandbox Code Playgroud)
而lightbox.js.erb
应该在应用程序/视图/书籍
如果它仍然无效,请尝试调用books/index.js
您还可以使用firebug/chrome来检查服务器响应您的ajax调用的内容
归档时间: |
|
查看次数: |
11280 次 |
最近记录: |