我的目标是从AJAX调用中呈现html。在我的AJAX调用中将dataType更改为'html'似乎在我的控制台上工作,它很高兴地宣称渲染成功:
Rendered admin/articles/show.html.erb within layouts/application (108.1ms)
Completed 200 OK in 185ms (Views: 112.6ms | ActiveRecord: 2.8ms)
但页面不会改变。
以下是一些代码:
查看:
<span id='show' class="ui-icon ui-icon-extlink" article_id=<%=article.ID %> onmouseover="this.style.cursor='pointer'"></span>
jquery的:
$('#show').live("click",function(evt){
evt.preventDefault();
var article_id=$(this).attr("article_id");
$.ajax({
success : null,
type : 'GET',
url : '/admin/articles/show',
dataType : 'html',
data: {
id: article_id
},
});
});
和我的控制员:
def show
@article = Article.find(params[:id])
respond_to do |format|
format.html
format.xml { render :xml => @article }
end
end
的routes.rb
match 'articles/show' => 'articles#show', :via => :get
我知道想要从AJAX渲染html是一个奇怪的请求,但这是我认为在span标记中包含可点击链接的最简单方法。
使用Rails 3.0.1
,Ruby 1.9.2
和JQuery
答案 0 :(得分:1)
通常ajax请求ha js类型,如果你可以将类型更改为js,这些更改将起作用
控制器
def show
@article = Article.find(params[:id])
respond_to do |format|
format.html
format.js
format.xml { render :xml => @article }
end
端
然后在app / views / articles / show.js.erb中编写javascript代码以更新页面内容,如
$("#yourDiv1").html("blah blah");
$("#yourDiv2").html("whatever");
以下方法适用于html和JS
$.ajax({
success : null,
type : 'GET',
url : '/admin/articles/show',
dataType : 'html',
data: {
id: article_id
},
}).done(function( html ) {
$("#yourDIv").html(html);
});