Ben giriş düğmesi üzerinden formu ibraz xhrPost olamıyorum, deliriyorum

1 Cevap php

It's rather lengthy, TLDR version below crit wall of text.

Setup: Firmamız süredir prototip kullanarak ve sadece son zamanlarda dojo geçiş olmuştu. Ben çok ve JS çok dönüştürme ve geri normal kadar her şeyi ayarlama ve sonra ben bu sorunu karşılaştığım olmuştur ...

The issue: Ben bir dosya yükleme alanı ile kurulmuş tipik bir form var. (Ben bir Dijit kullanarak değilim, ve bunların birden fazla varyasyonlar denedi -. 1.4 belki de benim için çalışmıyor tekrar deneyeceğim) Gönder düğmesini benim niyetim basarak Upon dosyalar upload ilerleme izlemek için, prototip bu Basit bir ajax.PeriodicalUpdater çağrı (wich üzerinde ve tekrar çalışır ikonların xhrGet / Post) idi. Apc.rfc1867 ile birleştiğinde (örneğin: http://www.phpriot.com/articles/php-ajax-file-uploads/3) bu ikonların göndermek çok kolay olur ve dosyanın geçerli durumunu almak için kullanımı ajax.

Here is where I encounter the actual issue ... xhrPost () Form I (sayfa biriktirme ve yükleme nerede) 'modu submit' dediğimiz gider sonra çalıştırmak istediğiniz görünmüyor. APC aslında geçerli ilerleme yoklar ve ajax% dönmek için 'to modunda' olması dosyaları gerekiyor.

What I have tried: Only one thing has partially worked. Using the onclick="" calling the xhrPost() imediately followed by return false; The problem with this is that the only way I got it to actually work was to click the submit button, and then click a seperate submit button with return false... I think why this worked is that it started a normal submit, then during the upload process it sent the xhrPost() along with return false;. It's probably the uploads re-started, but what is sure is that the APC data was being fed into the progress bar, unfortunately this shouldn't require 2 clicks. Also, it didn't finish submitting the page either.

Ben düğme veya form () dojo.connect kullanarak küçük bir başarı elde ettik.

Ben onclick = "" olmadıkça return false kullanarak küçük bir başarı elde ettik; mevcut.

Ben ayrı bir istek göndermek için dojo.io.iframe kullanarak küçük başarı yaşadım.

Ben dojox.file.FileUpload kullanarak küçük bir başarı vardı, ve bir büyük o kendi sorunları toplamını de sunuyor ettik.

Code Snippets:

Eski Kod:

new PeriodicalExecuter(function(pe) {
	if( dojo.byId('progressbar').innerHTML == 'Processing...' ) {
		pe.stop();
	} else if( dojo.byId('progressbar').innerHTML != '' ) {
		dojo.byId('progressbar1').setStyle({
			width: dojo.byId('progressbar').innerHTML + '%'
		});
	}
}, 1);

Yeni Kod:

	dojo.xhrPost({
		url: 'ajax/apcProgressBar.php',
		content: { progress_key: dojo.byId( 'progress_key' ).value },
		load: function( data ) {
			dojo.byId( 'progressbar' ).innerHTML = data;
			if( dojo.byId( 'progressbar' ).innerHTML != '' ) {
				dojo.style( 'progressbar1', 'width', dojo.byId( 'progressbar' ).innerHTML + '%' );
        	  window.setTimeout(this, 2000);
			}
		}
	});
}

APC Taşıma:

if( isset( $_POST[ 'progress_key' ] ) ) {
if( $status = apc_fetch( 'upload_' . $_POST[ 'progress_key' ] ) ) {
	$progress = ceil( $status[ 'current' ] / $status[ 'total' ] * 100 );
	if ( $progress >= 100 ) {
		echo 'Processing...';
	} else {
		echo $progress;
	}
}
echo '...';

}

TLDR Version: Ben yüklemek için dosyaları ile bir formu göndermek ve aynı zamanda xhrPost () göndermek için bir yol gerekir, ve hiçbir şey eserlerini deneyin. Yalnızca diğer değişken APC yüklenecek çalışıyor dosyası hakkında bilmek ve olayı durdurma tamamen bu engel gibi görünüyor olmasıdır.

1 Cevap

Bu ile oynadıktan sonra biraz daha benim kendi çözüm ile geldi.

Ben dojosunu ve prototip kullanılan bir test sayfası yaptı. Ben fark bir şey prototipi de aynı durumda bir hatayı, bu ben hala anlamıyorum ancak ajax istekleri ile kalıcı olmanın sonuçları dönecektir, bu durumda ben ajax güncellemeleri talep devam) (Javascripts yerli setInterval kullanılan verdi oldu . (Özel bir dojo sınıf yapılan)

Umarım bu gelecekte, birisi yardımcı olur.