在服务器端进程结束后,如何完成显示新信息?
这通常是我所拥有的,评论中有一些伪代码:
require 'sinatra'
get '/' do
t1 = Thread.new {
sleep 10
}
#if t1 running display
# "Loading..."
#when t1 ends display
# "Successfully accessed this page."
end
在服务器端进程结束后,如何完成显示新信息?
这通常是我所拥有的,评论中有一些伪代码:
require 'sinatra'
get '/' do
t1 = Thread.new {
sleep 10
}
#if t1 running display
# "Loading..."
#when t1 ends display
# "Successfully accessed this page."
end
为了使用 AJAX,您必须在服务器上创建一个端点并使用 jQuery 或其他框架来简化从 javascript 调用端点的使用。我将粘贴一个简短的示例。
服务器可能如下所示:
require 'sinatra'
set :views, "."
get '/' do
erb :home
end
get '/ajax_endpoint' do
t1 = Thread.new {
sleep 10
}
'Done'
#do the job
end
将包含以下内容的文件放入 views 文件夹(在我的情况下与主 sinatra 应用程序所在的文件夹相同):
<html>
<script src='http://code.jquery.com/jquery-2.0.3.min.js'></script>
<script>
window.onload = function() {
$.get('/ajax_endpoint', function(data) {$("#the_div").text("Job done!")})
}
</script>
<body>
<div id='the_div'>
Loading...
</div>
</body>
</html>
为了使示例开箱即用,请调用视图 home.erb。
主要部分是调用 $.get 函数。它使用 jQuery frameowrk 在您指定为参数的 url 处发出异步 http 请求。第二个参数是成功的回调函数。有关 AJAX 的更多信息,请使用 Google,而对于 jQuery 特定使用,请尝试:http ://api.jquery.com/jQuery.ajax/