Ajax Çıktısını Stream Etmek
-
Hocalar bir dosya upload edip, işleyip ekrana birkaç satır yazı basmak istiyorum. fakat işlem uzun sürecek onun için her satır arasında 15-20 sn olacak.
Yapmaya çalıştığım
1) Upload ederken progressbar (yada siz %sini ekrana basmak olarak düşünün progressbarı ben hallederim)
2) Gelen 5 satır datayı tek tek almak
Kullandığım ajax fonksiyonu bu, fakat yazı satır satır gelecek diye de bi kaide yok yani ben progress eventine geleni tek tek almak istiyorum. bu işi kolaylaştıran bi jquery plugini yada script varmı bildiğiniz? nodejs demeyin ayrı server açamam onun icin
$(document).ready(function () { var url = "/Contact.aspx/FilePost"; document.getElementById('File').addEventListener('change', function (e) { var file = this.files[0]; var xhr = new XMLHttpRequest(); xhr.file = file; // not necessary if you create scopes like this xhr.addEventListener('progress', function (e) { var done = e.position || e.loaded, total = e.totalSize || e.total; console.log('xhr progress: ' + (Math.floor(done / total * 1000) / 10) + '%'); }, false); if (xhr.upload) { xhr.upload.onprogress = function (e) { var done = e.position || e.loaded, total = e.totalSize || e.total; console.log('xhr.upload progress: ' + done + ' / ' + total + ' = ' + (Math.floor(done / total * 1000) / 10) + '%'); }; } xhr.onreadystatechange = function (e) { if (4 == this.readyState) { console.log(['xhr upload complete', e]); } }; xhr.open('post', url, true); xhr.send(file); }, false); });
-
hocam şimdi doğru düzgün okudum postu, senin dediğin gibi bağlantı kapanmadan 15 sn gelen aralıklarla gelen veriyi okumayı denemdim, şu readystate olayına bak http://www.w3schools.com/ajax/ajax_xmlhttprequest_onreadystatechange.asp büyük ihtimal readystate 2veya3 iken responsetext e baktığında gelen bitmemiş veriyi görebilirsin ayrıca http://stackoverflow.com/questions/3880381/xmlhttprequest-responsetext-while-loading-readystate-3-in-chrome şurayıda bir incele senin söylediğin olay. xhr de buffer geldiğinzaman devreye giren event yok sanırım
yüzde olayı içinde hesaplamış orda zaten kodda birtane div oluştur id ver, document.getelementbyid("divid").innerhtml=yüzde diyip ekrana basarsın bilmiyorum bunumu sordun plugin fln bilmiyorum.
eğer xhr ile uğraşmam vs dersen signalr kütüphanesini ekle aspye upload denemedim ama realtime çalışırsın
detCode tarafından 25/Nis/14 19:48 tarihinde düzenlenmiştir -
node.js websocket dicektim demeyin demişsin :) o kadar zahmetli bir iş değil aslında :) ayrı servera falan gerek yok.
edit: bide olayı tam anlamadım demek istediğin veri gelicek ama ne kadar veri gelecek onu bilmiyorum hepsini nasıl alırım parse ederim mi diyosun ? öyle ise arguments methodunu kullanabilirsin .lenght ile size'ı alıp foreach ile dönebilirsin.
Gzx tarafından 25/Nis/14 23:02 tarihinde düzenlenmiştir