javascript - Rails AJax 获取动态 URL

标签 javascript jquery ruby-on-rails ajax

嗨,我是 rails noe 的初学者,我正在使用 jplayer 在 rails 4 中使用音乐播放器应用程序,并创建一个播放列表,我正在使用 Ajax 函数

$.ajax({ 
    type: 'GET',
    url:"../albums.json",
    success: function(data){
                  myPlaylist.add({title:$(this).attr("names")})
                                        },
    error: function(xhr,status,error){
                      alert(error);
                    }
    });

我想要的是当我点击要播放的特定专辑时,将像 albums/3.json 这样的单张专辑传递给 Ajax URL ...欢迎任何想法

最佳答案

既然你是初学者,我来给你解释一下


Ajax

Ajax代表 Asynchronous Javascript And XML - 它旨在与您的标准 HTTP 请求并行发送请求。这基本上意味着您可以从服务器请求数据而无需重新加载页面。

大多数人的问题是他们认为 Ajax 是一种黑魔法;它实际上只是 Javascript 代表您向您的服务器发送请求。

当您使用 Ajax 发送请求时,您需要能够将正确的数据发送到正确的 URL,然后相应地处理响应。

我是在开始使用软件很久之后才知道的,所以希望对您有所帮助。

--

路线

#config/routes.rb
resources :albums #-> domain.com/albums/[:id]

您需要采取的第一步是正确定义您的路线。由于 Rails 使用 resourceful routing结构(路由围绕各种以 Controller 为中心的资源构建,您将能够使用

当您向 albums/x.json 发送请求时,您实际上是在向 albumsshow 操作发送请求资源,您需要准备好

--

Controller

设置路由时,您需要能够通过 Controller 处理 JSON 请求。您将使用 respond_to 执行此操作 block :

#app/controllers/articles_controller.rb
Class ArticlesController < ApplicationController
    def show
        @album = Album.find params[:id]

        respond_to do |format|
            format.html
            format.json { render json: @album.to_json} 
        end
    end
end

--

UJS

最后,您最好使用 Rails' UJS为此 - UJS 旨在发送 ajax 请求(除其他外),而无需编写任何 JS 代码。

#app/views/controller/index.html.erb
<%= link_to "Play", @album, remote: true, format: :json %>

然后您将能够使用标准 JS 和一些 UJS ajax event hooks 来捕获响应:

#app/assets/javascripts/application.js
$(document).on("ajax:complete", "#link", function(data){
   //stuff here
});

关于javascript - Rails AJax 获取动态 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24730611/

相关文章:

javascript - 我可以将 props 作为函数参数传递吗?或者这是一个不好的做法吗?

javascript - HTML 媒体捕获一键

jquery - 无法使用 jquery 执行日期验证

html - 使用 content_tag 时 Ruby on Rails 中 html 表的奇怪呈现

javascript - CSS 显示内联 block 并用元素填充所有空间

javascript - 在 javascript 中查询 php json_encode 结果

javascript - jQuery.parseJSON 意外的标记/

ruby-on-rails - Rspec 如何避免 allow_any_instance_of

ruby-on-rails - 在 heroku 中将 force_ssl 设置为 false 后如何删除无限重定向循环?

javascript - 获取 nodejs 函数定义