プログレスバーの更新に関する問題がいくつかあります。私がやりたいのは、完了するまでに時間がかかる ajax 呼び出しを起動することです。この呼び出し中に、間隔で設定された ajax 呼び出しを起動して、プログレスバーを更新します。
私は解決策を見つけることができず、ここで一致するブラウザの制限しか見つけられなかったので. 常に最大 2 つのコールがアクティブです。
それでも、最初の (メインの) 通話が終了するまで、2 番目の通話は Google Chrome で保留されたままになります。
編集: 完全な jquery スクリプト
// update cars cache
$('#cars_cache_update_run').bind('click', function(){
// remove button
$(this).remove();
// hide import widgets
$('#products_import_widget').css('display', 'none');
$('#vehicles_import_widget').css('display', 'none');
$('#orders_import_widget').css('display', 'none');
$('#test_data_widget').css('display', 'none');
// show blind
$('#cars_cache_update_info').css('display', 'none');
$('#cars_cache_update_blind').css('display', 'inline');
var carsUpdateInterval = setInterval(function() {
getImportState('http://localhost/index.php/import/import_state/cache_update', 'cars_import_progressbar');
}, 1000);
// ajax request
$.ajax({
url: "http://localhost/index.php/import/cars_cache",
async : true,
success: function(data){
$('#cars_cache_update_blind').css('display', 'none');
$('#cars_cache_update_success').css('display', 'inline');
clearInterval(carsUpdateInterval);
},
error: function(thrownError){
$('#cars_cache_update_blind').css('display', 'none');
$('#cars_cache_update_error').css('display', 'inline');
$('#cars_cache_update_error_msg').html(thrownError);
}
});
});
function getImportState(url, id)
{
$.ajax({
url: url,
success: function(data){
var json = $.parseJSON(data);
$.each(json, function(i, item) {
var progressbar_value = json[i]['state'];
$( "#"+id ).progressbar({
value: progressbar_value
});
})
}
});
}
別の面白いことに、$.get でインターバル リクエストを呼び出すと、奇妙なエラーが発生します。
GET http://localhost/[object%20Object] 404 (Not Found) jquery.1.7.min.js:4
send jquery.1.7.min.js:4
f.extend.ajax jquery.1.7.min.js:4
f.(anonymous function) jquery.1.7.min.js:4
(anonymous function)
すでに何時間も試してきたあなたの助けに感謝します..多分私はただの初心者です..ハハ。
ルートレス