Ajax Çıktısını Stream Etmek

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tarikat Şeyhi
    HolyOne
    HolyOne's avatar
    Kayıt Tarihi: 01/Haziran/2002
    Erkek

    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);
    
        });

    Nush ile uslanmayanı etmeli tekdir, Tekdir ile uslanmayanın hakkı kötektir!
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    detCode
    detCode's avatar
    Kayıt Tarihi: 30/Kasım/2012
    Erkek

    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

    Who is detCode?
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Gzx
    Gzx's avatar
    Kayıt Tarihi: 23/Ağustos/2005
    Erkek

    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

    "açık mı var la" yazdı diye ban yiyen adam !
Toplam Hit: 1104 Toplam Mesaj: 3