0

在服务器端进程结束后,如何完成显示新信息?

这通常是我所拥有的,评论中有一些伪代码:

require 'sinatra'

get '/' do
  t1 = Thread.new {
    sleep 10
  }
  #if t1 running display 
  #  "Loading..."
  #when t1 ends display
  #  "Successfully accessed this page."
end
4

1 回答 1

2

为了使用 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/

于 2013-08-24T21:11:22.747 回答