从Ajax中的另一个页面中选择数据

时间:2014-02-04 10:55:33

标签: javascript ruby-on-rails ajax

这是我的ajax处理代码:

$.ajax({
    url: "shirts/first?page=" + params[:page],
    type: "GET"
})

如何告诉Ajax从衬衫/第一个文件中的下一页获取结果? 我编写的代码正如我所示,但它引发了一个错误,说'语法错误'!我该如何解决这个问题?

还有我的.js.erb文件,如果有一些帮助:

$("#container1").append("<%= escape_javascript(render 'shirts/first')%>");

2 个答案:

答案 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=helloworldhelloworld可能是另一页你的故事。

对于.js.erb文件,在rails 3.0.8中,您必须使用escape_javascript打包每个raw()来电:

$("#container1").append("<%= raw(escape_javascript(render 'shirts/first')) %>");