Javascript RubyonRails-如何使控制器使用ajax同时执行2个操作?
我在开发环境中使用ajax为同一控制器调用两个不同的操作。 在一个动作中,我更新数据库的过程非常缓慢。 在另一个动作中,我想得到更新进度条的百分比。 我可以看到两个都在执行, 问题是,第二个动作正在等待第一个动作完成,然后自己执行,它应该每秒执行一次,以获得实际的百分比。 rails可以并行执行两个操作吗?还是Webrick的问题Javascript RubyonRails-如何使控制器使用ajax同时执行2个操作?,javascript,ruby-on-rails,ruby,ajax,controller,Javascript,Ruby On Rails,Ruby,Ajax,Controller,我在开发环境中使用ajax为同一控制器调用两个不同的操作。 在一个动作中,我更新数据库的过程非常缓慢。 在另一个动作中,我想得到更新进度条的百分比。 我可以看到两个都在执行, 问题是,第二个动作正在等待第一个动作完成,然后自己执行,它应该每秒执行一次,以获得实际的百分比。 rails可以并行执行两个操作吗?还是Webrick的问题 我按照建议试过用彪马 但它仍在等待第一次行动, 下面是ajax代码调用 $(document).ready(function() { $(':button').cl
我按照建议试过用彪马 但它仍在等待第一次行动, 下面是ajax代码调用
$(document).ready(function() {
$(':button').click(function(){
var formData = new FormData($('form')[0]);
$.ajax({
url: '/quotes/upload', //Server script to process data
type: 'POST',
//Ajax events
beforeSend: progress,
success: completeHandler,
error: function(ts) { alert(ts.responseText) },
// Form data
data: formData,
//Options to tell jQuery not to process data or worry about content-type.
cache: false,
contentType: false,
processData: false
});
});
});
function progress() {
$.ajax({
url: '/quotes/status.json',
dataType: "JSON"
}).success(function (percentual) {
if (percentual >= '95') {
location.reload();
} else {
var $bar = $('.bar');
$bar.width(percentual+"%");
setInterval(progress,800);
}
});
}
这是控制台打印输出:
Started GET "/quotes/status.json" for 127.0.0.1 at 2014-09-21 10:23:38 -0300
Processing by QuotesController#status as JSON
percentual => 0 Completed 200 OK in 4ms (Views: 0.6ms | ActiveRecord: 0.0ms)
Started POST "/quotes/upload" for 127.0.0.1 at 2014-09-21 10:23:38 -0300
Processing by QuotesController#upload as */*
Parameters: {"quotes"=>#<ActionDispatch::Http::UploadedFile:0x00000001b980b0 @tempfile=#<Tempfile:/tmp/RackMultipart20140921-5849-otvxky>, @original_filename="HIST_XXX.TXT", @content_type="text/plain", @headers="Content-Disposition: form-data; name=\"quotes\"; filename=\"HIST_XXX.TXT\"\r\nContent-Type: text/plain\r\n">}
Rendered quotes/index.html.erb within layouts/application (0.7ms)
Completed 200 OK in 10456ms (Views: 170.3ms | ActiveRecord: 0.0ms)
Started GET "/quotes/status.json" for 127.0.0.1 at 2014-09-21 10:23:49 -0300
Processing by QuotesController#status as JSON
percentual => 100 Completed 200 OK in 3ms (Views: 0.4ms | ActiveRecord: 0.0ms)
2014年9月21日10:23:38-0300开始获取127.0.0.1的“/quotes/status.json”
QuotesController处理“状态为JSON”
percentual=>0在4ms内完成200 OK(视图:0.6ms |活动记录:0.0ms)
于2014-09-21 10:23:38-0300开始发布127.0.0.1的“报价/上传”
通过QuotesController处理“上载为”*/*
参数:{“引号”=>#}
布局/应用程序中的渲染引号/index.html.erb(0.7ms)
在10456ms内完成200 OK(视图:170.3ms |活动记录:0.0ms)
2014年9月21日10:23:49-0300开始获取127.0.0.1的“/quotes/status.json”
QuotesController处理“状态为JSON”
percentual=>100在3ms内完成200次OK(视图:0.4ms |活动记录:0.0ms)
正如我所看到的,对于控制台,它只是在上传之前进行第一次调用,然后进行上传,然后在完成后对状态进行第二次调用你是对的-Webrick一次只处理一个请求。可能是give,也可能是go-它们都处理并发请求 注意:请注意,使用SQLite可能会出现类似的并发问题(特别是在涉及写操作的情况下!)请切换到PostgeSQL或MySQL
使用: Gemfile
gem 'thin'
gem 'puma'
gem 'unicorn'
当然
bundle install
bundle install
bundle install
然后启动服务器
thin start
rails s puma
unicorn_rails
使用: Gemfile
gem 'thin'
gem 'puma'
gem 'unicorn'
当然
bundle install
bundle install
bundle install
启动服务器
thin start
rails s puma
unicorn_rails
使用: Gemfile
gem 'thin'
gem 'puma'
gem 'unicorn'
当然
bundle install
bundle install
bundle install
启动服务器
thin start
rails s puma
unicorn_rails
谢谢你的提示,
我找到了一个解决方案:
将此文件放在development.rb文件中:
config.middleware.delete Rack::Lock
你还必须改变韦德里克。
Puma也能正常工作。您应该能够发出2个javascript请求。你能把代码贴出来让我看看是怎么回事吗?