Autor | Zpráva | ||
---|---|---|---|
David Klouček Profil |
Potřebuju v jedné aplikaci dynamicky přidávat několik file inputů a podle potřeby uploadovat jednotlivý soubory. Nahrávání souborů s klasickým reloadem stránky se kvůli ostatním AJAXovým komponentám vylučuje, jenže přes AJAX nejdou posílat soubory, tak chci použít plugin http://jquery.malsup.com/form/.
A teď kde je problém - po kliknutí na tlačítko "Nahrát" se normálně načte cílová stránka formuláře a to je mi k ničemu, já potřebuju odesílat data bez znovunačtení. Celá stránka vypadá následovně: <html> <head> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.js"></script> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script> <script type="text/javascript" src="http://malsup.github.com/jquery.form.js"></script> </head> <body> <script type="text/javascript"> $(document).ready(function() { $('#startUpload').submit(function() { $('#uploadForm').ajaxForm( { url : './uploader.php', dataType : 'xml', iframe : true, success : function(data) { console.log(data); } } ); }); }); </script> <form id="uploadForm" action="" method="POST" enctype="multipart/form-data"> <input type="hidden" name="id" value="0"> <input type="file" name="file"> <!-- !! --> <input type="submit" id="startUpload" value="Nahrát"> </form> </body> </html> Rady ze Stackoverflow nepomohly. Nevíte někdo co s tím? |
||
_es Profil |
#2 · Zasláno: 5. 4. 2012, 16:42:08
David Klouček:
„přes AJAX nejdou posílat soubory, tak chci použít plugin ht>tp://jquery.malsup.com/form/“ Smeruj jednoducho formulár na <iframe> na stránke, ani ten plugin to asi nerobí inak.
|
||
Chamurappi Profil |
Reaguji na Davida Kloučka:
Řekl bych, že na elementu s id="startUpload" nemůže nastávat událost onsubmit , kterou se snažíš chytit.
|
||
David Klouček Profil |
#4 · Zasláno: 5. 4. 2012, 17:53:40
Chamurappi:
Máš pravdu, teď se ta událost volá. Momentálně řešim, proč se mi neposílá požadavek do uploader.php: $(document).ready(function() { $('#uploadForm').submit(function() { var array = { url : './uploader.php', dataType : 'html', iframe : true, success : function(data) { alert(data); } }; $('#uploadForm').ajaxForm(array); return false; }); }); |
||
_es Profil |
#5 · Zasláno: 5. 4. 2012, 18:05:58
David Klouček:
„Momentálně řešim, proč se mi neposílá požadavek do uploader.php“ Ak to spravíš podľa rady v [#2], tak to máš funkčné bez pluginu, bez jQuery a dokonca úplne bez JS. |
||
David Klouček Profil |
#6 · Zasláno: 5. 4. 2012, 18:54:06
_es:
Radši to tak udělam. |
||
David Klouček Profil |
Následující kód v jQuery má za úkol vložit data do iframu, ovšem nefunguje a já nechápu proč. Firebug mi žádný chyby nepíše a je to podle příkladů z internetu, nikde k tomu víc nepíšou.
<iframe id="x" src="" height="100" width="100"> <script type="text/javascript"> $(document).ready(function() { $('#x').contents().html('text'); }); </script> Začínam mít na Javascript vztek, protože je v něm bordel jako v C, u věcí jako jsou cookies si musim ručně napsat vlastní funkce.. Zrovna tak nedokážu pochopit, proč nejdou posílat soubory přes AJAX - brání snad něco programu (prohlížeči) komunikovat se serverem?! Proč třeba musim mít pro blokování pop-up oken nějakej doplněk, nebo se to prohlížeč jenom snaží zachytit a nefunguje to tak, že by interpret Javascriptu prostě ignoroval kus kódu s tim pop-up? |
||
_es Profil |
David Klouček:
„vložit data do iframu“ Ako vložiť? Možno si nepochopil radu v [#2]: <form target="názovIframe" action="uploader.php" enctype="multipart/form-data"> <input type="file" name="subor"> <input type="submit" value="Nahrať"> </form> <iframe name="názovIframe"></iframe> „Začínam mít na Javascript vztek, protože je v něm bordel jako v C“ Neospravedlňuj tvoje neznalosti vlastnosťami programovacieho jazyka. |
||
David Klouček Profil |
_es:
Jj, díky za radu, já to těď tak udělal. Ale je tu jinej zádrhel - po odeslání formuláře do iframe potřebuju zjistit co vrátil server, takže musim vytáhnout z toho iframe obsah. Mam podle návodu: jQuery('#mojeIdIframu').contents().text(); A vrací to prázdnej string. |
||
Časová prodleva: 4 dny
|
|||
_es Profil |
David Klouček:
„po odeslání formuláře do iframe potřebuju zjistit co vrátil server“ Máš tri možnosti: 1) Najjednoduchšia je tá, že iframe je viditeľný a server vráti nejaký HTML dokument, ktorý informuje návštevníka, s akým výsledkom prebehlo nahratie súboru ([#5]). 2) Server vráti HTML dokument aj s nejakým JS, ktorý pomocou vlastnosti top má prístup k okolitému oknu. 3) Do document.getElementById('#mojeIdIframu').onload priradíš funkciu. V tej sa dá cez frames["názovIframe"] pristupovať k objektu window dokumentu načítaného do iframe.
Možno sa ti zíde: Co vlastně je jQuery? |
||
Časová prodleva: 12 let
|
0