问题描述
我正在使用php POST将文件上传到服务器的网站上工作,并且正在尝试向上传中添加进度栏。
我遵循本指南:
它在ie和firefox中很棒。但是进度条永远不会在chrome中更新。
这个函数被调用的超时时间为500。
function updateProgress(id){
var time = new Date()。getTime();
//向服务器发出GET请求
//将我们的上传标识符作为参数传递
//同时传递当前时间以防止缓存
$ .get('progressbar。 php',{uid:id,t:time},function(data){
//获取输出为整数
var progress = parseInt(data,10);
if进度< 100 ||!started){
var div = document.getElementById('statusfield');
div.innerHTML = progress +'%';
//确定上传是否存在开始
开始=进度
//如果我们没有完成或开始,再次更新
updateProgress(id);
}
if(progress> 99){
var div = document.getElementById('statusfield');
div.innerHTML ='Komprimerar fil ...';
}
//更新进度条百分比
//但是只有当我们已经开始
时开始&& pbar.progressbar('value',progress);
});
}
该函数调用通过上传的.php文件progressbar.php
progressbar.php:
<?php
if(isset($ _ GET ['uid'])){
//获取上传进度数据
$ status = uploadprogress_get_info($ _ GET ['uid']) ;
if($ status){
//计算当前百分比
echo round($ status ['bytes_uploaded'] / $ status ['bytes_total'] * 100);
}
else {
//如果没有数据,假设它已完成
echo 100;
}
}
?>
我已经在chrome中测试了代码,并调用了函数updateProgress。但它永远不会超过:
$ $ $。get('progressbar.php',{uid:id,t:time} ,函数
有没有人有任何线索可能会出错?
谢谢!
在chrome中去开发工具(Options - > Tools - > Developer tools)并查看网络面板,一旦$ .get方法被调用,你将看到你的请求和结果 - 你可以看到它是否失败(例如,如果404发生),所以也许铬不设置地址,因为它应该或者发送的数据/返回数据不正确。
I'm working on a site that uses php POST to upload files to a server and i'm trying to add a progress bar to the uploads.I followed this guide:
http://www.ultramegatech.com/2010/10/create-an-upload-progress-bar-with-php-and-jquery/
It works great in ie and firefox. But the progressbar never updates in chrome.
This function gets called with a timeout of "500".
function updateProgress(id) {
var time = new Date().getTime();
// Make a GET request to the server
// Pass our upload identifier as a parameter
// Also pass current time to prevent caching
$.get('progressbar.php', { uid: id, t: time }, function (data) {
// Get the output as an integer
var progress = parseInt(data, 10);
if (progress < 100 || !started) {
var div = document.getElementById('statusfield');
div.innerHTML = progress + '%';
// Determine if upload has started
started = progress < 100;
// If we aren't done or started, update again
updateProgress(id);
}
if (progress > 99) {
var div = document.getElementById('statusfield');
div.innerHTML = 'Komprimerar fil...';
}
// Update the progress bar percentage
// But only if we have started
started && pbar.progressbar('value', progress);
});
}
This function calls the .php file "progressbar.php" which passes the upload progress back as a percentage number.
progressbar.php:
<?php
if (isset($_GET['uid'])) {
// Fetch the upload progress data
$status = uploadprogress_get_info($_GET['uid']);
if ($status) {
// Calculate the current percentage
echo round($status['bytes_uploaded']/$status['bytes_total']*100);
}
else {
// If there is no data, assume it's done
echo 100;
}
}
?>
I have tested the code in chrome and the function "updateProgress" gets called. But it never gets past the:
$.get('progressbar.php', { uid: id, t: time }, function
Does anyone have any clue on what could be wrong?
Thanks!
In chrome go to dev tools (Options -> Tools -> Developer tools) and look at the network panel. Once the $.get method is called you will see your request and the result - you can see if it fails (for example if a 404 happens) so maybe chrome doesn't set the address as it should or if the sent data / return data isn't ok.
这篇关于$ .get函数不在Chrome中运行,但在IE和FireFox中工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!