Autor | Zpráva | ||
---|---|---|---|
look23 Profil * |
#1 · Zasláno: 19. 9. 2013, 10:36:28
Zdravím,
na stránce mám několik formářů. <form action="" method="post" onsubmit="return checkHandOverForm({id});" name="formular{id}" id="frm{id}"></form> Odesílá se vždy jen jeden. V javascriptu přes nově otevřené okno ukládám do hlavního okna. Na konci pak přes script odesílám konkrétní formulář přes document.getElementById("frm"+cislo).submit();, ale to způsobí, že se odešle prázdný a přitom tam ty údaje jsou. Setkal se někdo s tím, že by se odeslal formulář bez dat nebo tam mám nějakou lamerskou chybu, kterou pořád přehlížím? Děkuju |
||
peta Profil |
#2 · Zasláno: 19. 9. 2013, 10:51:38
Link na stranku?
Delas "lamerskou chybu", pravdepodobne odesilas prazdny formular, spatne zkopirovana data nebo jiny formular nebo mas formular ve formulari. Bez kodu a vstupnich dat se to neda zjistit. |
||
look23 Profil * |
#3 · Zasláno: 19. 9. 2013, 11:42:24
Notes.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Poznámky</title> <script type="text/javascript"> function Init () { var re_id = new RegExp('id=(\\d+)'); var cislo = (re_id.exec(String(window.location)) ? new Number(RegExp.$1) : 0); var sharedObject = window.dialogArguments; var notes = document.getElementById ("notes"); var notes_all = document.getElementById ("notes_all"); notes.value = sharedObject.notes; notes_all.value = sharedObject.notes_all; } // save dialog function OnOK () { var re_id = new RegExp('id=(\\d+)'); var cislo = (re_id.exec(String(window.location)) ? new Number(RegExp.$1) : 0); var notes = document.getElementById ("notes"); var notes_all = document.getElementById ("notes_all"); if (window.showModalDialog) { var sharedObject = {}; sharedObject.notes = notes.value; sharedObject.notes_all = notes_all.value; sharedObject.cislo = cislo; if( notes_all.value != '' ) { if( notes.value != '' ) info = 4; else info = 1; } else { if( notes.value != '' ) info = 5; else info = 2; } sharedObject.info = info; window.returnValue = sharedObject; } else { // if not modal, we cannot use the returnValue property, we need to update the opener window window.opener.UpdateFields (notes.value, notes_all.value, cislo, info); } window.close (); } // close dialog function OnCancel () { window.close (); } </script> <body onload="Init ();"> Všeobecná poznámka:<br/> <textarea id="notes_all" rows="5" cols="25"></textarea><br/> Individuální poznámka:<br/> <textarea id="notes" rows="5" cols="25"></textarea><br/> <br/> <button onclick="OnOK ()">OK</button> <button onclick="OnCancel ()">Cancel</button> </body> </html> Hlavní okno (TPL) {literal} <script type="text/javascript"> function formSubmit(cislo) { document.getElementById("frm"+cislo).submit(); } // z notes do edit function UpdateFields (newFore, newSur, cislo, info) { var notes = document.getElementById ("notes"+cislo); var notes_all = document.getElementById ("notes_all"+cislo); var obr = document.getElementById ("info"+cislo); notes.value = newFore; notes_all.value = newSur; obr.src="/img/info"+info+".png"; formSubmit(cislo); } // z edit do notes function ShowModal (cislo) { var notes = document.getElementById ("notes"+cislo); var notes_all = document.getElementById ("notes_all"+cislo); var sharedObject = {}; sharedObject.notes = notes.value; sharedObject.notes_all = notes_all.value; if (window.showModalDialog) { var retValue = showModalDialog ("/notes.html?id="+cislo, sharedObject, "dialogWidth:200px; dialogHeight:250px; dialogLeft:350px;"); if (retValue) { UpdateFields (retValue.notes, retValue.notes_all, retValue.cislo, retValue.info); } } else { // we want similar functionality in Opera, but it's not modal! var modal = window.open ("{/literal}{$E_CHANNEL_URL}{literal}/notes.html", null, "width=200,height=200,left=300,modal=yes,alwaysRaised=yes", null); modal.dialogArguments = sharedObject; } } function checkHandOverForm(id) { // kontrola jestli jsou v ostatních polích čísla } </script> {/literal} <table> {foreach ...} <tr> <form action="" method="post" onsubmit="return checkHandOverForm({$id});" name="formular{$id}" id="frm{$id}"> <td align="right"> <td bgcolor="#ffccff" title="{$notes_all}"> {if $general_notes neq ''} {if $notes neq ''} {assign var="info" value="4"} {else} {assign var="info" value="1"} {/if} {else} {if $notes neq ''} {assign var="info" value="5"} {else} {assign var="info" value="2"} {/if} {/if} <img src="/img/info{$info}.png" id="info{$id}" style="cursor: pointer;" onClick="ShowModal({$id});"> <input type="text" name="notes_ind_1" id="notes{$id}" value="{$notes}"> <input type="text" name="notes_ind_2" value="{$notes}"> <input type="text" name="notes_all_1" id="notes_all{$id}" value="{$general_notes}"> <input type="text" name="notes_all_2" value="{$general_notes}"> </td> <td> <input type="hidden" name="id" value="{$id}"> </td> <td align="right">{$zaznam}</td> </form> </tr> {/foreach} </table> |
||
_es Profil |
#4 · Zasláno: 19. 9. 2013, 11:50:17
look23:
A kde je definovaná tá neznáma, mnohokrát použitá, premenná $id ?
|
||
look23 Profil * |
#5 · Zasláno: 19. 9. 2013, 11:55:24
_es:
Všechny proměnný se tahají přes foreach z objektu a databáze. Správně by tam mělo být {$objekt->id} |
||
_es Profil |
look23:
Ťažko nad tým špekulovať, keď nevieme, čo všetko server z nejakých objektov a databázy odošle prehliadaču. Keby si ten problém zredukoval len na HTML, možno by ti mohlo poradiť viac ľudí. Alebo by sa hodila aj „živá“ ukážka. |
||
look23 Profil * |
#7 · Zasláno: 19. 9. 2013, 12:09:58
Jeden řádek tabulky
<tr class="kniha_col_1"> <form action="" method="post" id="frm73856"> <td > <img src="/img/info1.png" id="info73856" style="cursor: pointer;" onClick="ShowModal(73856);"> <input type="text" name="notes_ind_1" id="notes73856" value=""> <input type="text" name="notes_ind_2" value=""> <input type="text" name="notes_all_1" id="notes_all73856" value="pokus"> <input type="text" name="notes_all_2" value="pokus"> </td> <td> <input type="submit" onsubmit="return checkHandOverForm(73856);" name="akce" id="trans_send73856" value="Uložit" class="button_dark"> </td> </form> </tr> |
||
_es Profil |
#8 · Zasláno: 19. 9. 2013, 12:17:59
look23:
Ale ten „jeden riadok“ nejako nesedí s [#1]. Udalosť onsubmit má formulár, nie odosielacie tlačítko.
|
||
polonium Profil |
A bavíme se o tom, že když odesíláš ajaxový požadavek tak ty data nemáš nebo že na straně serveru nedostaneš žádná data.
|
||
look23 Profil * |
#10 · Zasláno: 19. 9. 2013, 14:36:06
polonium:
Nedostávám žádná data, na první pohled se to chová jakoby k odeslání formuláře došlo, ale ve skutečnosti se jen reloadne stránka a nic se neprovede. |
||
martin1312 Profil |
#11 · Zasláno: 19. 9. 2013, 14:41:50
look23:
_es ti už napísal, kde je chyba [#8] |
||
look23 Profil * |
#12 · Zasláno: 19. 9. 2013, 14:48:53
martin1312:
Ale i tak to nepomůže. Pokud to udělám takto. <form action="" method="post" onsubmit="return checkHandOverForm(73883);" id="frm73883"> <input type="submit" name="akce" id="trans_send73883" value="Uložit" class="button_dark"> </form> Tak je to pořád stejné jako [#10], dokonce jsem okomentoval ostatní formuláře, aby se to netlouklo a nic. |
||
peta Profil |
onsubmit="return checkHandOverForm(73883);" function checkHandOverForm(id) { // kontrola jestli jsou v ostatních polích čísla } <form action="" method="post" onsubmit="return checkHandOverForm(73883);" id="frm73883"> echo '<hr><pre>'; print_r($_POST); echo '</pre><hr>'; |
||
look23 Profil * |
#14 · Zasláno: 19. 9. 2013, 15:33:44
peta:
Pro print_r($_POST); při tom odesílání je $_POST prázdné. Při je problém stejný jako u toho odesílání scriptem. <input type="button" onClick="formSubmit(73883)" id="trans_send73883" value="Uložit" class="button_dark"> <input type="submit" id="trans_send73883" value="Uložit" class="button_dark"> |
||
polonium Profil |
#15 · Zasláno: 19. 9. 2013, 16:29:29
A koukal jsi ve firebugu ze ty data skutecne neposilas? Pouzivas nejaky framework?
|
||
_es Profil |
#16 · Zasláno: 19. 9. 2013, 21:55:45
look23:
Vyrob „živú“ ukážku, nikomu sa nechce z teba „dolovať“ dostatok informácií na vyriešenie tvojho problému. |
||
look23 Profil * |
#17 · Zasláno: 20. 9. 2013, 14:48:45
Všem:
Děkuji za spolupráci - nakonec jsem to obešel, věci se ukládají v tom malém okně a do velkého jen javascriptem pošlu návratovou ohdnotu na aktualizaci různých prvků formuláře. Po refresh stránky se ty údaje zaktualizují ze zdroje. |
||
Časová prodleva: 11 let
|
0