2016-04-24 24 views
0

100%にジャンプ:jQueryのプログレスバーは、私は、これは設定持っている

HTML

<div id="tst_loader"></div> 

JAVASCRIPTを

$.ajax({ 
    xhr: function() { 
     var xhr = new window.XMLHttpRequest(); 
     xhr.upload.addEventListener("progress", function(evt) { 
      if (evt.lengthComputable) { 
       var percentComplete = evt.loaded/evt.total; 
       //Do something with upload progress here 
     $('#tst_loader').html(percentComplete * 100 + '%'); 
      } 
     }, false); 

     xhr.addEventListener("progress", function(evt) { 
      if (evt.lengthComputable) { 
       var percentComplete = evt.loaded/evt.total; 
       //Do something with download progress 
      $('#tst_loader').html(percentComplete * 100 + '%'); 
      } 
     }, false); 

     return xhr; 
    }, 
    type: 'POST', 
    url: url, 
    data: {feed:""}, 
    success: function(data){ 
     //Do something on success 

    alert('done'); 
    } 

PHPの共同デ:コードが実行されるたびに

<?php 

$_POST['feed'] = 'http://www.cs.washington.edu/research/xmldatasets/data/tpc-h/orders.xml';/// A little heavier file for testing 


       $dom = new DOMDocument; 
       $dom->load($_POST['feed']); 

if(false !== $dom){ 

$use_errors = libxml_use_internal_errors(true); 
         $s = simplexml_import_dom($dom); 
         libxml_clear_errors(); 
         libxml_use_internal_errors($use_errors); 
         //libxml_disable_entity_loader($oldDisable); 

         if(false !== $s){  
$ctr = 0; 
foreach ($s->channel->item as $item) { 

    $out[$ctr]=$item->title; 

$ctr++; 
} 

echo json_encode($out); 

} 


} 




     ?> 

progressbarはすぐに他の言葉で.... RSS FEEDはまだフェッチされているにもかかわらず、100%にジャンプし、何の進展を示すがありません。すべてが素晴らしいようですが、それは跳躍し続けます...どのようにこれを達成するためのアイデア?...ありがとう!

EDIT::少し重い何かへのリンクを変更:質問へのコメントで述べたように、http://www.cs.washington.edu/research/xmldatasets/data/tpc-h/orders.xml

+0

「event.lengthComputable」はありますか? PHPスクリプトの場合、 'Content-Length'ヘッダを明示的に指定しない限り、答えは通常noです。 – Chris

+0

それ以降のブラウザでXMLHTTPRequest2を使用することは可能でしょうか? –

+0

@Chris ** Content-Length?を指定する方法は?...任意のアイデア?...あなたは、おそらく受け入れられる答えとして投稿できます。 thx –

答えて

0

Content-Lengthヘッダを設定する方法を(この場合には、それはその有用ではないのですが)でしょうecho json_encode($out);を次のように置き換えてください:

$content = json_encode($out); 
header("Content-Length: ".strlen($content)); 
echo $content; 
+0

ありがとう、私はまだそれを読み込むことができないけれども...私が入れた新しいXMLファイルは約5MBですが、それは100%に固執していません... Firefoxを使用していて、しかし、( –

+0

@UniversalGrasp私は質問のコメントに言ったように、XMLをロードするのにかかる時間は完全に無関係です。プログレスバーはその時間全体にわたって0に留まります。標準のAJAXを使って計算できる唯一のもの – Chris

+0

あなたは絶対に方法がないということを意味していますか... ...( –

関連する問題