Kde mám chybu?
ajaxem si zavolám php, které v databázi vyhledá požadované hodnoty a vrátí je do .done
z done zavolám funkci s těmito parametry, která vytvoří formulář (s předvyplněnými hodnotami) a ajaxem ho pošle do dalšího php, které ty hodnoty uloží do databáze.
Dnes mně málem zabili na dálnici a jen shodou náhod to odnesly jen plechy, tak se možná vyjadřuji nejasně, zítra to chci vyzkoušet a případně lépe popsat
PS tu funkci jsem do done zatím nepsal, jen uvažuji, zda to takto půjde a zítra to zkusím.
jde o to, zda formulář může být v javascriptové funkci.
Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.
Ale k věci, to co chcete by samozřejmě šlo, proč ne, ale jak jsem již psal je to poměrně nesmysl. Logicky by to mělo být
- nahrát modul s předpřipravenými hodnotami rovnou (ne ajaxem)
- odeslání zpracovat ajaxem a v reakci na něj případně skrýt formulář, zobrazit místo něj děkujeme za odeslání nebo pod.
Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.
nevím, co přesně myslíte slovy "nahrát modul", ale předpokládám, že myslíte zobrazit vlastní modul.
Tady je vše vepsáno v modulu joomly typu "vlastní obsah".
Pak se teprve chci naučit napsat vlastní modul, kde to možná bude jednodušší.
Ten formulář je tam pořád, ale hrátky s ním si mohu také vyzkoušet.
Je vidět i bez přihlášení na www.gaylocator.com
Já to dopoledne zkusím napsat, tak jak si myslím a když to nepůjde, dovolím se na to ještě doptat. Teď už se na to psychicky necítím
Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.
kód mám:
<script>
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) {
}
function formuloz(){
jQuery.ajax({
url: '/components/com_lovefactory/models/lmenu.php',
data: {d1: form4}
}).done(function(){
console.log('Odeslano');
}).fail(function(){
console.log('Odeslání selhalo');
});
}
</script>
volání testvlevo.php mi do .done vrátí ty výchozí hodnoty.
Ale funkci zobrazform nemohu napsat takto
<form name="fm1">
<input type="text" name="form4" value = data >
<a href="javascript:formuloz(fm1);"><img src="../images/tl_refresh_a.png" ></a>
</form>
</script>
<form name="fm1">
<input type="text" name="form4" value = data >
<a href="javascript:formuloz(fm1);"><img src="../images/tl_refresh_a.png" ></a>
</form>
<script>
Jak to mám udělat?
Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.
Je jasný, že pokud ten script ve funkci ukončím a zase obnovím, vypíše se nejprve ten formulář a žádnou proměnnou data nezná.
Když tam ten script nepřeruším, hlásí to chybu, protože formulář asi nemůže být v rámci <script>
Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.
Zase motáte hrušky a jabka. Ne že formulář nemůže být uvnitř script, ale nemůžete motat HTML a JavaScript.ernst napsal: Když tam ten script nepřeruším, hlásí to chybu, protože formulář asi nemůže být v rámci <script>
Takže HTML v Javascriptu musíte nějak šikovně vytvořit. třeba pomocí jQuery(''), nebo pomocí jQuery.html(), nebo prostě document.write(''); nebo místo čistého AJAX použít v tomto případě funkci load , nebo si formulář vytvořit již předem v PHP a v JS doplňovat jen ty hodnoty.
A nezapomínejte na středníky na konci příkazů!
Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.
function zobrazform(data) {
document.open();
document.write('<form name="fm1">');
document.write('<input type="text" name="form4" value = data >');
document.write('<a href="javascript:formuloz(fm1);"><img src="../images/tl_refresh_a.png" ></a>');
document.write(</form>);
document.close();
}
Dnes už mi to nemyslí, zkusím ráno
Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.
<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) {
document.open();
document.write('<form name="formular">');
if (data=="1") {
document.write('<input type="checkbox" name="form4" checked >');
} else {
document.write('<input type="checkbox" name="form4">');}
document.write('<a href="javascript:formuloz(formular);"><img src="../images/tl_refresh_a.png" ></a>');
document.write('</form>');
document.close();
}
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>
Ale má to velkou vadu. Ten formulář se zobrazí na nové stránce, takže vůbec nevidím uvodní stranu webu, ale jen ten formulář na bílé stránce a nikam jinam se nedostanu.
Nějak nevím, proč to tak je a nic mně zatím nenapadá.
Dokážete mi s tím poradit?
PS ona mi problikne úvodní stránka a pak se natáhne tenhle modul, který je už jen v nové stránce. Tento modul se zobrazuje na úvodní stránce, tekže cesty "zpět" není
Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.
Protože voláte document.open(); a document.close();ernst napsal: Nějak nevím, proč to tak je a nic mně zatím nenapadá.
Dokážete mi s tím poradit?
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...
Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.
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ář
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:
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?
Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.