Přihlásit se

Vyřešeno Kde mám chybu?

25. říj 2015 00:12 - 25. říj 2015 00:13 #124130
Kde mám chybu? od Ernst
Joomla Expert
Udělal jsem si modul typu vlastní obsah.
V něm mám
Code:
<div id="results"></div> <form name="form"> <input type="checkbox" name="form2" /> <span style="color: #999999;">Skryj moje umístění na mapě</span><br><br> <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: #404041;"><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="form3"/> <span style="color: #999999;">Změň svoji pozici na mapě</span><br> <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> <button onclick="form(form2,form3,form4,form5,form6,form7)"><img src="../images/tl_refresh_a.png" /buttom> </form> <script> function form(form2,form3,form4,form5,form6,form7){ jQuery(function(){ Query.ajax({ url: '/components/com_lovefactory/models/lmenu.php', data: {d2: form2, d3: form2,d4: form4, d5: form5,d6: form6, d7: form7} }).done(function(data){ jQuery('#results').html(data); }).fail(function(){ jQuery('#results').html('AJAX selhal'); }); }, function(error){ jQuery('#results').html(error.message); }); </script>

ajax mi nezavolá to dané php s požadovanými parametry.
Nevíte někdo, kde je chyba?

25. říj 2015 11:18 #124141
Odpověď od Houbák
Zkušený uživatel
V js funkci form máte parametry form2,form3,form4,form5,form6,form7, které ale nemáte nikde definované. Zapněte si v prohlížeči konzolu s chybami a hned uvidíte, kde máte problém.

25. říj 2015 16:54 #124146
Odpověď od Ernst
Joomla Expert
díky, konsole mi napíše:
Uncaught SyntaxError: Unexpected end of input
VM25767:1 Uncaught TypeError: Cannot read property 'childNodes' of undefined

A ty proměnný mám jak nadefinovat? já myslel, že když je pošlu jako parametr té funkce, tak je nadefinovaný mám.

25. říj 2015 21:07 #124154
Odpověď od Cony
Moderátor
Nevypisujte sem celé kódy. Potřebujete-li poradit s principem, zjednodušte si kód třeba jen na jeden checkbox a čitelně jej naformátujte. Kdo se má prodírat tím dlouhým kódem a něco v něm hledat. ˇ

Ve funkci máte sice definované parametry form2 atd. ale v jejím volání je berete kde? Co je to zde to form2 atd...
Code:
<button onclick="form(form2,form3,form4,form5,form6,form7)"><img src="../images/tl_refresh_a.png" /buttom>
Mimochodem ne /buttom ale /button

25. říj 2015 23:26 #124158
Odpověď od Ernst
Joomla Expert
aha, proto to hlásilo tu chybu Unexpected end of input.
Myslel jsem, že napsáním v input je nadefinuji.
to je mám ještě předtím nadefinovat jako var?

25. říj 2015 23:41 #124159
Odpověď od Ernst
Joomla Expert
nebo mám nadefinovat proměnné jako
var pr2 = document.form.form2.value
?

26. říj 2015 00:03 - 26. říj 2015 00:06 #124160
Odpověď od Ernst
Joomla Expert
ale i když to udělám takhle, tak mi ten ajax nezavolá to php.
chyba musí být ještě někde jinde?
zjednodušený výpis
Code:
<div id="results"></div> <form name="form"> <input type="checkbox" name="form2" /> <span style="color: #999999;">Skryj moje umístění na mapě</span><br><br> <button onclick="form()"><img src="../images/tl_refresh_a.png" /button> </form> <script> function form({ var pr2 = document.form.form2.value jQuery(function(){ Query.ajax({ url: '/components/com_lovefactory/models/lmenu.php', data: {d2: pr2} }).done(function(data){ jQuery('#results').html(data); }).fail(function(){ jQuery('#results').html('AJAX selhal'); }); }, function(error){ jQuery('#results').html(error.message); }); </script>

26. říj 2015 00:47 #124161
Odpověď od Cony
Moderátor
V místě volání žádná proměnná form2 neexistuje. Nepleťte si název input prvku s JavaScriptovou proměnou, nemá to spolu co dělat. Takže:
- ano, form 2 by muselo být nejprve deklarováno jako var form2.
- ano hodnotu do proměnné form2 musíte nejprve naplnit (používáte checkboxy, uvědomte si rozdíl mezi hodnotu a stavem checkboxu zaškrtnuto / nezaškrtnuto)
- chyba musí být TAKÉ někde jinde, co třeba středníky na konci řádek?

Máte ale jednoúčelovou funkci (alespoň to tak vypadá), tak proč to neřešit až přímo ve funkci (do té si poslat jen formulář - this.form). A nejlépe pomocí jQuery, když už ho používáte
Code:
jQuery(form).find('[name=form2]') ...

26. říj 2015 01:05 #124162
Odpověď od Ernst
Joomla Expert
trošku se ztrácím, budu to muset nechat na ráno.
příkaz
var pr2 = document.form.form2.value nenaplní proměnnou pr2 hodnotou toho checkboxu?
to přeci také řeším až v té funkci
co vlastně přesně dělá jQuery(form).find('[name=form2]') ... , Vrátí výsledek toho pole?

středníky na konci stránek přebývají nebo chybí

konzole mi vypíše tohle:
Uncaught TypeError: form is not a functiononclick @ (index):177
Navigated to http://localhost/index.php/cs/?

Jaký je rozdíl mezi hodnotou a stavem checboxu? nebylo by nakonec jednodušší použít select ano/ne?
někde jsem možná četl že formulář odesílá hodnotu, jen když je checbox zaškrtnut?

26. říj 2015 01:53 - 26. říj 2015 01:54 #124163
Odpověď od Cony
Moderátor

ernst napsal: var pr2 = document.form.form2.value nenaplní proměnnou pr2 hodnotou toho checkboxu?

Hodnotou ano, ale to neznamená zaškrtnuto / nezaškrtnuto.

ernst napsal: co vlastně přesně dělá jQuery(form).find('[name=form2]') ... , Vrátí výsledek toho pole?

vyhledá ve formuláři prvek s jménem form2 za tři tečky si doplňte co potřebujete s tím prvkem dělat (zjistit checked, zjistit hodnotu).

ernst napsal: středníky na konci stránek přebývají nebo chybí

Ne na konci stránek, ale na koci řádků v javaskriptu

ernst napsal: někde jsem možná četl že formulář odesílá hodnotu, jen když je checbox zaškrtnut?

Ano, ale vy neodesíláte formulář, ale zpracováváte ho v javaskriptu. Odesílaná data si tedy musíte pořešit sám.

26. říj 2015 18:42 #124185
Odpověď od Ernst
Joomla Expert
díky, to mám zase chvíli, co studovat.
Jak jsem psal dříve, doufal jsem, že javascript se nebudu muset učit

Jde pomocí img zavolat php a tam si vše včetně javascriptu pořešit?
např.
var img = new Image();
img.src = "skript.php?a=1";

26. říj 2015 18:47 #124186
Odpověď od Houbák
Zkušený uživatel
Prakticky na jakýkoliv prvek můžete dát onclick událost a zavolat přes AJAX php soubor...

26. říj 2015 19:06 #124187
Odpověď od Ernst
Joomla Expert
právě to studuji
to php z formuláře mohu volat např.
Code:
<form name="form"> <input type="text" name="form2"> <input type="text" name="form3"> <a href="javascript:form();">OK</a> </form>
Code:
<form action="send.php" method="GET"> <input type="text" name="prom1" /> <input type="text" name="prom2" /> <input type="submit" /> </form>

nebo co jsem použil já
Code:
<button onclick="form()"><img src="../images/tl_refresh_a.png" /button>

ale proč se mi proboha nezavolá to php (mám na jeho začátku dán zápis do logu)

koukám na to a nemohu to vykoukat.
asi prvně zkusím místo checbox dát třeba select nebo text.
tam to snad bude srozumitelnější

nebo to zkusit napsat nějat takhle?
Code:
<form action="form-1.php" method="post"> Jméno: <input type="text" name="jmeno"> věk: <input type="text" name="vek"> <input type="submit" value="odeslat"> </form> <? $jmeno = $_POST['jmeno']; $vek = $_POST['vek']; ?> <p><? echo "$jmeno"; ?> je pěkné jméno i když je ti <? echo "$vek"; ?> let...</p>

ale mně se ten ajax líbí nejvíc

27. říj 2015 20:31 #124198
Odpověď od Ernst
Joomla Expert
tak jsem to zkusil jiným způsobem

JS:
Code:
<form method="GET" action='/components/com_lovefactory/models/lmenutest.php' > <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;">Změň svoji pozici na mapě</span><br> <input type="submit"><img src="../images/tl_refresh_a.png">
pak php
Code:
<?php define( '_JEXEC', 1 ); if (!isset($_GET["form2"])) {$f2="off";} else {$f2=$_GET["form2"];} ; var_dump($f2) ; if (!isset($_GET["form3"])) {$f3="off";} else {$f3=$_GET["form3"];} ; var_dump($f3) ;

tak se mi to do toho php předá ok, mohu si to tam zapsat do databáze atd.
ale zůstane mi to na té volané stránce ) prázdná stránka ale já se potřebuji vrátit na tu původní stránku, ta ale může být pokaždé jiná

27. říj 2015 20:44 #124199
Odpověď od Ernst
Joomla Expert
to jsem alespoň částečně vyřešil
stačí za to php dát
Code:
<script> javascript: history.go(-1) </script>

ale ta prodleva bílé stránky je na můj vkus dost dlouhá.
opravdu bych to rád vyřešil tím ajaxem, ale to by mně tady někdo musel trochu nakopnout, protože javascript se učím teprve třetí den

Powered by Fórum