这是我的ajax处理代码:
$.ajax({
url: "shirts/first?page=" + params[:page],
type: "GET"
})
如何告诉Ajax从衬衫/第一个文件中的下一页获取结果? 我编写的代码正如我所示,但它引发了一个错误,说'语法错误'!我该如何解决这个问题?
还有我的.js.erb文件,如果有一些帮助:
$("#container1").append("<%= escape_javascript(render 'shirts/first')%>");
答案 0 :(得分:1)
如果您正在执行ajax分页,则必须确保您可以在控制器上处理Ajax请求(使用respond_to
),并发送正确的数据:
<强> JS 强>
#app/assets/javascripts/application.js
$("a.pages").on("click", function() {
$.ajax({
url: "shirts/first?page=" + $(this).attr("id"),
type: "GET"
});
});
您需要将您的分页按钮添加到此
的页面ID中<强>控制器强>
#app/controllers/shirts_controller.rb
def first
@shirts = Shirt.where(your_query)
respond_to do |format|
format.html
format.js
end
end
查看强>
#app/views/shirts/first.js.erb
$("#container1").append("<%= raw(escape_javascript(render 'shirts/first')) %>");
答案 1 :(得分:0)
你在javascript中混合了rails params和javascript代码
url: "shirts/first?page=" + params[:page]
由于:
charachter,有语法错误,即使你删除它也意味着你有一个名为params
的javascript对象而page
是一个变量,它引用params
中的一个键{1}}对象,而这里params[:page]
指的是一个查询字符串,其关键字是来自客户端的当前请求中的page
。
所以改变它:
$.ajax({
url: "shirts/first?page=<%= params[:page] %>",
type: "GET"
});
这里你必须要小心,因为上面的代码意味着当前页面在其查询字符串中加载了page
,如:http://example.com/homepage?page=helloworld
和helloworld
可能是另一页你的故事。
对于.js.erb文件,在rails 3.0.8中,您必须使用escape_javascript
打包每个raw()
来电:
$("#container1").append("<%= raw(escape_javascript(render 'shirts/first')) %>");