Problém s odpovědí s AJAX metodou – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Problém s odpovědí s AJAX metodou – JavaScript, AJAX, jQuery – Fórum – Programujte.comProblém s odpovědí s AJAX metodou – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

harpener0
Newbie
29. 3. 2011   #1
-
0
-

Zdravím,
mám formulář v tabulkovém designu a potřebuji funkce na přidání a odebrání řádku.
Přidání řádku řeším pomocí metody AJAX, kdy od serveru dostanu odpověď:



<?php session_start();
$_SESSION["i"] = $_POST["i"];
echo "<tr class=\"stred\" id=\"tr_".$_SESSION["i"]."\">".
"<td><input type=\"hidden\" name=\"id_".$_SESSION["i"]."\" id=\"id_".$_SESSION["i"]."\" value=\"".$_SESSION["i"]."\"></td>".
"<td><input type=\"text\" name=\"jmeno_".$_SESSION["i"]."\" id=\"jmeno_".$_SESSION["i"]."\" value=\"".$_SESSION["i"]."\" style=\"text-align:center\" disabled></td>".
"<td><input type=\"text\" name=\"rodne_cislo_".$_SESSION["i"]."\" id=\"rodne_cislo_".$_SESSION["i"]."\" value=\"".$_SESSION["i"]."\" style=\"text-align:center\" disabled></td>".
"<td><input type=\"text\" name=\"bydliste_".$_SESSION["i"]."\" id=\"bydliste_".$_SESSION["i"]."\" value=\"".$_SESSION["i"]."\" style=\"text-align:center\" disabled></td>".
"<td><input type=\"text\" name=\"obor_".$_SESSION["i"]."\" id=\"obor_".$_SESSION["i"]."\" value=\"".$_SESSION["i"]."\" style=\"text-align:center\" disabled></td>".
"<td><img name=\"upravit_".$_SESSION["i"]."\" id=\"upravit_".$_SESSION["i"]."\" src=\"images/upravit.png\" alt=\"upravit\" title=\"upravit\" onclick=\"upravit(this.name);\">".
"<img name=\"odstranit_".$_SESSION["i"]."\" id=\"odstranit_".$_SESSION["i"]."\" src=\"images/odstranit.png\" alt=\"odstranit\" title=\"odstranit\" onclick=\"odstranit(this.name);\"></td></tr>";
++$_SESSION["i"]; ?>

a tuto odpověď připojím k tabulce:


document.getElementById("tabulka").innerHTML += xmlHttp.responseText;

Dále funkci odebrání řádku řeším pomocí rodičovské struktury:


document.getElementById("radek").parentNode.removeChild(document.getElementById(id_tr));

Problém nastane, když odstraním přidaný řádek - něco na stránce zabere neviditelné místo a to se s každým novým odstraněným řádkem zvyšuje. Zkoušel jsem zjistit tvar toho místa (ctrl+a), ale nic tam nevidím. Proto mě zajímá, co to způsobuje, jestli se jedná o odpověď od serveru, nebo o nesprávné připojení řádku k tabulce, nebo něco jiného.
Pozn.: Kód byl zjednodušen a upraven pro lepší pochopení (např.: id řádku se neshoduje s předchozím příkladem), ale neovlivní to samotnou funkci.
Předem děkuji za odpovědi,
Harpener.

Nahlásit jako SPAM
IP: 212.71.186.–
m->29+6
Super člen
29. 3. 2011   #2
-
0
-

Nebolo by možné sem hodiť radšej adresu tej stránky? Tak to moc neviem čo by to mohlo byť. Každopádne skús nový riadok pridávať do tbody a nie do samotnej tabuľky. Inak neviem. Vo FireBugu alebo DragonFly by to malo byť pekne vidieť čo to biele miesto spôsobuje.

Nahlásit jako SPAM
IP: 83.240.51.–
harpener0
Newbie
29. 3. 2011   #3
-
0
-

pokrok, použil jsem thead a tbody a pomocí development tool google chromu zjišťuji, že ona bílá místa jsou samé <tbody></tbody> pod sebou a vznikají přidáním nového řádku. Opravdu to bylo vkládáním do table místo do tbody, teď už vše funguje ve firefox, chrome, opera, safari, akorát v IE se mi nechce spustit funkce přidání nového řádku, mám zjištěné, kde by měla být chyba:
http://www.pixhost.org/show/2212/6463823_bez-nazvu.png

Nahlásit jako SPAM
IP: 212.71.186.–
m->29+6
Super člen
29. 3. 2011   #4
-
0
-

Hej, to by sa dalo obísť tak, že namiesto pričítania obsahu k innerHTML pridáš prvok štandardným API DOMu:

var tBody = document.createElement('tbody');

tBody.innerHTML = xmlHttp.responseText;
document.getElementById("tbody").appendChild(tBody.firstChild);
tBody = null;
Malo by to fungovať, ale neviem v kt. verzii IE ti to nešlo. Predpokladám, že na IE6 už kašleš, ale aj tam by to malo hádam ísť ;-)

Nahlásit jako SPAM
IP: 83.240.51.–
harpener0
Newbie
30. 3. 2011   #5
-
0
-

Dělám na localhostu, tak ti tu zkusím uploadnout celé ty soubory související s funkcí. Pracuju v IE9 (tady mi nejde funkce přidání řádku - zkusil jsem se řídit podle předchozího příspěvku :)), Firefox 4, Chrome 10, Safari 5.0.3 a Opera 11.01 - v opeře mi nejdou smazat nově přidané řádky.
Pozn: nejde mi je nahrát přes stránku, tak jsem je dal na leteckou poštu: http://leteckaposta.cz/647955883

Nahlásit jako SPAM
IP: 212.71.186.–
m->29+6
Super člen
31. 3. 2011   #6
-
0
-

No neviem, hlavne mi to nejde ani spustiť, lebo nemám príslušnú DB. Jednoducho zapni DragonFly a nejaký debugger v IE a laď ;-)

Nahlásit jako SPAM
IP: 83.240.51.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 9 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý