| 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: 14 let
|
|||
0