嗨,我是 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
发送请求时,您实际上是在向 albums
的 show
操作发送请求资源,您需要准备好
--
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/