Přihlásit se

Vyřešeno Kde mám chybu?

03. lis 2015 15:29 #124312
Odpověď od Cony
Moderátor

ernst napsal: Nějak nevím, proč to tak je a nic mně zatím nenapadá.
Dokážete mi s tím poradit?

Protože voláte document.open(); a document.close();
Na document.write v tomto případě zapomeňte, v asynchroním volání by se Vám formulář vypsal bůh ví kam, použijte buď to .load(), nebo některou z metod jQUery - .html(), .append() atd...

03. lis 2015 16:04 - 03. lis 2015 16:08 #124315
Odpověď od Ernst
Joomla Expert
to mně taky napadlo, ale pokud tam to document open a close nedám, zacyklí se to.
jdu studovat ty další možnosti, zatím o nich nemám potuchy.

Nemáte pro urychlení nějaký příklad?
.

03. lis 2015 22:29 - 03. lis 2015 22:31 #124323
Odpověď od Ernst
Joomla Expert
díky moc, ráno to vyzkouším.
Škoda, že nelze použít ten document.write, to mi přišlo srozumitelné a plně mi to vyhovovalo
Kterou z těch možností považujete pro mně nejsrozumitelnější a nejvýhodnější?

04. lis 2015 00:11 #124325
Odpověď od Cony
Moderátor
Podle mně by Vám měl pro nahrání fomruláře plně vyhovovat .load()

04. lis 2015 11:32 - 04. lis 2015 11:34 #124330
Odpověď od Ernst
Joomla Expert
tak jsem si dohledal ještě dokumentaci:
www.w3schools.com/jquery/jquery_ajax_load.asp
jquery-navod.cz/kategorie-ajax/9-ajax

ale ztrácím se v tom. Dříve jste psal "nahradit ajax funkcí .load"
To jsem ne zcela pochopil.

Zkouším do té funkce zobrazform natáhnout formulář
Code:
function zobrazform(data) { $("#sem_nacteme").load("/components/com_lovefactory/models/testvlevo.html", function() { alert('Načteno'); }); }

Funkce testajax proběhne a jak zavolá funkci zbrazform tak v consoli napíše:
Code:
Uncaught TypeError: Cannot read property 'load' of nullzobrazform @ (index):162(anonymous function) @ (index):156j @ jquery.js:3148k.fireWith @ jquery.js:3260x @ jquery.js:9314b @ jquery.js:9718

To znamená, že to .load nemůže být ve funkci zobrazform?
Ale kde tedy?

04. lis 2015 11:55 #124331
Odpověď od Ernst
Joomla Expert
když dám do modulu jen ten příklad
Code:
<script type="text/javascript"> $("#sem_nacteme").load("/components/com_lovefactory/models/testvlevo.html", function() { alert('Načteno'); }); $("#sem_nacteme").load("/components/com_lovefactory/models/testvlevo.js", function(response, status, xhr) { // status - v případě, že nastane chyba, bude mít hodnotu "error" // xhr - informace o chybě if(status == "error") // když nastala chyba { alert("Nastala chyba číslo: "+xhr.status+" - "+xhr.statusText); // xhr.status - číslo chyby // xhr.statusText - textový popis chyby, třeba error // Not Found - nenalezeno, Acces denied - přístup odepřen apod. } else { alert('Načteno');} }); </script>
tak se mi taky nic nezobrazí

04. lis 2015 12:07 #124332
Odpověď od Ernst
Joomla Expert
i tenhle příklad
Code:
<!DOCTYPE html> <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <script> $(document).ready(function(){ $("button").click(function(){ $("#div1").load("/components/com_lovefactory/models/demo_test.txt", function(responseTxt, statusTxt, xhr){ if(statusTxt == "success") alert("External content loaded successfully!"); if(statusTxt == "error") alert("Error: " + xhr.status + ": " + xhr.statusText); }); }); }); </script> </head> <body> <div id="div1"><h2>Let jQuery AJAX Change This Text</h2></div> <button>Get External Content</button> </body> </html>
mi v consoli napíše Uncaught TypeError: Cannot read property 'click' of null a nereaguje na ten click

04. lis 2015 13:00 #124334
Odpověď od Ernst
Joomla Expert
když se to pokouším řešit přímo v testvlevo.php a v něm si načtu
Code:
$document = &JFactory::getDocument(); $document->addScript('/components/com_lovefactory/models/testvlevo.js');
tak se taky formulář neobjeví, což je vlastně logické

04. lis 2015 13:39 #124336
Odpověď od Cony
Moderátor
A nemícháte mootools a jQuery? Pokud nahráváte i mootools používejte místo $ jQuery.

04. lis 2015 14:59 - 04. lis 2015 15:06 #124339
Odpověď od Ernst
Joomla Expert
já jsem to asi totálně zamíchal tím, že jsem uvedl ty příklady co jsem zkoušel.
Tak raději od počátku
Code:
<script type="text/javascript"> testajax() function testajax(){ jQuery.ajax({ url: '/components/com_lovefactory/models/testvlevo.php' }).done(function(data){ console.log(data); zobrazform(data); }).fail(function(){ console.log('Odeslání selhalo'); }); }; function zobrazform(data) { $("#sem_nacteme").load("/components/com_lovefactory/models/testvlevo.js"); } function formuloz(formular){ if (document.formular.form4.checked==true){var p3 = "1";} else {var p3 = "0";}; jQuery.ajax({ url: '/components/com_lovefactory/models/lmenutest.php', data: {d3: p3} }).done(function(){ console.log('Odeslano'); javascript: document.location.reload (); }).fail(function(){ console.log('Odeslání selhalo'); }); }; </script>
Prní část proběhne ok a do data mi to z testvlevo.php vrátí hodnoty pro předvyplnění formuláře. a dál v tom mám asi zmatek.
Zavolá se funkce zobrazeno a to
Code:
$("#sem_nacteme").load("/components/com_lovefactory/models/testvlevo.js");
mi do logu vypíše
Code:
Uncaught TypeError: Cannot read property 'load' of null
jen pro úplnost v tom testvlevo.js
je
Code:
<form name="form"> <hr size="1" color="#999999" width="90%" /> <input type="checkbox" name="form2" /> <span style="color: #999999;">Skryj moje umístění na mapě</span><br> <input type="checkbox" name="form3"/> <span style="color: #999999;"><a href="/index.php/cs/my-profile"> Změň svoji pozici na mapě</a></span><br><br> <hr size="1" color="#999999" width="90%" /> <span style="font-size: 9pt;">&nbsp;<strong style="color: #999999; background-color:transparent;"><span style="color: #e4e4e4; font-family: Arial;">Jen pro</span></strong><span style="color: #8cc741; background-color: transparent;"><strong><span style="font-family: Arial;"> TOP</span></strong></span><strong style="color: #999999; background-color: transparent;"><span style="color: #e4e4e4; font-family: Arial;">&nbsp;nebo&nbsp;</span></strong><span style="color: #8cc741; background-color: transparent;"><strong><span style="font-family: Arial;">VIP</span></strong></span><strong style="color: #999999; background-color: transparent;"><span style="color: #e4e4e4; font-family: Arial;">&nbsp;uživatele:</span></strong></span><span style="font-size: 9pt; font-family: 'arial black', 'avant garde';" data-mce-bogus="1">&nbsp;<span id="_mce_caret" data-mce-bogus="1"><span style="background-color: transparent;" data-mce-bogus="1"></span></span></span> <input type="checkbox" name="form4"/> <span style="color: #999999;">Skryj vzdálenost</span><br> <input type="checkbox" name="form5"/> <span style="color: #999999;">Skryj datum přihlášení</span><br> <input type="checkbox" name="form6"/> <span style="color: #999999;">Skryj koho jsem návštívil</span><br> <input type="checkbox" name="form7"/> <span style="color: #999999;">Skryj reklamy</span><br> <a href="javascript:formajax();"><img src="../images/tl_refresh_a.png" ></a> </form> <script> function formajax(form){ if (document.form.form2.checked==true){ var p1 = "1";} else {var p1 = "0";}; if (document.form.form3.checked==true){ var p2 = "1";} else {var p2 = "0";}; if (document.form.form4.checked==true){ var p3 = "1";} else {var p3 = "0";}; if (document.form.form5.checked==true){ var p4 = "1";} else {var p4 = "0";}; if (document.form.form6.checked==true){ var p5 = "1";} else {var p5 = "0";}; if (document.form.form7.checked==true){ var p6 = "1";} else {var p6 = "0";}; jQuery.ajax({ url: '/components/com_lovefactory/models/lmenu.php', data: {d1: p1, d2: p2,d3: p3, d4: p4, d5: p5, d6: p6} }).done(function(){ console.log('Odeslano'); javascript: document.location.reload (); }).fail(function(){ console.log('Odeslání selhalo'); }); } </script>
To znamená mám funkční php, které mi z databáze načte hodnoty pro předvyplnění formuláře a úspěšně je pošle do "data".
pak mám php, které data z formuláře zapíše zpět do databáze.
Jen ten formulář se mi nedaří zobrazit.

Když jsem použil ten document.write, tak vše správně probíhalo, jen se ten formulář vypsal bůhví kde a stránky se staly nefunkční.
Už propadám beznaději a nevím, zda jsem to schopen dopsat.
Opravdu by jste mi za nějaký peníz ten kousek kódu nenapsal?

PS funkce formuloz je momentálně v kódu navíc nic ji nevolá
PS2 netuším co je mootools

pokud tedy napíši, jak doporučujete
Code:
function zobrazform(data) { jQuery("#sem_nacteme").load("/components/com_lovefactory/models/testvlevo.js"); }
už to chybu v consoli nehlásí, ale formulář se nezobrazí

05. lis 2015 09:10 #124355
Odpověď od Cony
Moderátor
Ježiš to je zase kódu. A element (zřejmě div) s id sem_nacteme na stránkách máte?
Poděkovali: Ernst

05. lis 2015 09:47 #124357
Odpověď od Ernst
Joomla Expert
no samozřejmě, zírám do toho 3 dny nonstop jak husa do flašky a tohle mně nenapadne.
Teď se to zobrazuje a funguje zápis do databáze (to jsem nechal ošetřeno v tom testvlevo.js)
tím pádem z kódu mohu vyhodit celou tu funkci formuloz.
akorát to nezobrazuje české znaky, ale s kódováním si poradím. (musí být UTF8?).
Když do toho javascriptu pošlu ty hodnoty na předvyplnění, mohu ve formuláři použít funkci IF abych udělal vstupní pole zaškrtnuté nebo nezaškrtnuté?

05. lis 2015 09:48 - 05. lis 2015 09:57 #124358
Odpověď od Ernst
Joomla Expert
ano UTF8, čeština opravena

05. lis 2015 10:16 #124359
Odpověď od Cony
Moderátor

ernst napsal: Když do toho javascriptu pošlu ty hodnoty na předvyplnění, mohu ve formuláři použít funkci IF abych udělal vstupní pole zaškrtnuté nebo nezaškrtnuté?

Té větě moc nerozumím, IF není funkce ale příkaz. určitě jí nemůžete použít ve formuláři. Formulář je HTML, to žádné IF nezná. Můžete jí použít v javaskriptu, a z něj si zaškrtat pole jaká potřebujete, nebo v PHP a formulář už posílat s příznakem checked u jednotlivých polí.

Powered by Fórum