В основном я делаю простой ajax-запрос
function upload(){
setInterval(function callMeOften()
{
$.ajax({
method: 'get',
url : 'uploadinfo.php?unique_id=<?php echo $some_uniq_id; ?>',
dataType : 'text',
success: function(text){ updatebar(text); },
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest.status);
alert(XMLHttpRequest.responseText);
}
});
}, 5000);
}
function updatebar(per){
$('#updateMe').animate({"width" : per});
}
к php-скрипту
$unique_id = $_GET['unique_id'];
$progress = uploadprogress_get_info($unique_id);
if(function_exists("uploadprogress_get_info")) {
if (floor(($progress['bytes_total']/1024)/1024) > 100){
echo "run";
} else {
if ($progress['bytes_uploaded'] == 0 || $progress['bytes_total'] == 0){
echo "100";
} else {
echo floor($progress['bytes_uploaded'] / $progress['bytes_total'] * 100);
}
}
}
Эта функция upload ();вызывается с помощью onsubmit ();действие формы загрузки файла
<form id="something" onsubmit="upload();" action="status.php" enctype="multipart/form-data" method="post">
Я использую относительные пути, и запрос работает в FF и IE, но в chrome, safari и opera запросы ajax даже не запускаются во время загрузки.
Что происходит?
РЕДАКТИРОВАТЬ: В конце я просто показал прогресс загрузки в отдельном окне, которое было создано с помощью действия onsubmit и изменило размеры и переместилось в центр экранавыглядит хорошо и безусловно самый простой способ