Autor | Zpráva | ||
---|---|---|---|
Pinqui Profil |
#1 · Zasláno: 14. 7. 2009, 17:41:29 · Upravil/a: Pinqui
DObrý den. četl jsem si článek viz:
http://php.vrana.cz/odeslani-formulare-pres-ajax.php?new=8643#new Popisuje použití ajaxu tímto kódem: <script type="text/javascript"> /** Odeslání formuláře přes XMLHttp požadavek * @param function state_change funkce zajišťující obsluhu při změně stavu požadavku, dostane parametr s XMLHttp objektem * @param string url URL požadavku * @param object form formulář k odeslání * @param object [headers] předané hlavičky ve tvaru { 'hlavička': 'obsah' } * @return boolean true v případě úspěchu, false jinak * @copyright Jakub Vrána, http://php.vrana.cz */ function post_xmlhttprequest(state_change, url, form, headers) { var elements = form.elements; var content = []; for (var i=0; i < elements.length; i++) { if (elements[i].attributes.name && elements[i].attributes.name.specified && !elements[i].disabled) { if (/^(select)$/i.test(elements[i].tagName)) { var options = elements[i].options; for (var j=0; j < options.length; j++) { if (options[j].selected) { var value = (options[j].attributes.value && options[j].attributes.value.specified ? options[j].value : options[j].text); content.push(encodeURIComponent(elements[i].name) + '=' + encodeURIComponent(value)); } } } else if (!/^(submit|reset|button|file|image)$/i.test(elements[i].type) && (!/^(radio|checkbox)$/i.test(elements[i].type) || elements[i].checked)) { content.push(encodeURIComponent(elements[i].name) + '=' + encodeURIComponent(elements[i].value)); } } } if (!headers) { headers = {}; } headers['Content-Type'] = 'application/x-www-form-urlencoded'; return send_xmlhttprequest(state_change, 'POST', url, content.join('&'), headers); } </script> a aby uživatel viděl zda se něco děje připojeil další kód: <script type="text/javascript"> function odeslat(form) { document.getElementById('stav').innerHTML = 'Odesílá se.'; return post_xmlhttprequest(function (xmlhttp) { if (xmlhttp.readyState == 4) { document.getElementById('stav').innerHTML = 'Odesláno.'; } }, 'odeslat.php', form); } </script> + začal s formulářem: <span id="stav"></span> <form action="" method="post" onsubmit="return !odeslat(this);"> Nějak ale prostě nevím, jak by měl vypadat soubor (hlavně formulář) třeba s jedním inputem, selectem a jedním checkboxem, aby když se klikne na odeslat, tak se uživateli opravdu zobrazilo co se děje a přitom se data odeslala do souboru test.php. Můžete mi to prosím někdo trochu osvětlit? Na jeho diskusi jsem psal, ovšem odpověď žádná děkuji. |
||
Chamurappi Profil |
#2 · Zasláno: 14. 7. 2009, 18:05:25 · Upravil/a: Chamurappi
Reaguji na Pinquiho:
Prosím o odkaz na živou ukázku. Zajímalo by mě, proč o ni musím vždy prosit (často i několikrát ty samé lidi). |
||
Pinqui Profil |
#3 · Zasláno: 14. 7. 2009, 18:55:53
Chamurappi
http://superpokec.cz/try/form.php kód html vidíš když klikneš na zdrojový kód.. kód test.php: <?php $vypis=""; if(isset($_POST["text"])){ $vypis .= $_POST["text"]; } if(isset($_POST["checkbox"]) && $_POST["checkbox"] == "on"){ $vypis .= " Checkbox byl zaškrtnut"; } if(isset($_POST["select"])){ $vypis .= " $_POST[select]"; } $db = MyDB::_(); $db->set_charset('utf8'); $db->query("INSERT INTO testik (text) VALUES ('$vypis')") ?> |
||
Chamurappi Profil |
#4 · Zasláno: 14. 7. 2009, 19:00:51 · Upravil/a: Chamurappi
Reaguji na Pinquiho:
Funkci send_xmlhttprequest, kterou voláš z post_xmlhttprequest, máš kde? Asi by sis ji měl vzít odtud. |
||
Pinqui Profil |
#5 · Zasláno: 14. 7. 2009, 20:18:48
Chamurappi
Aha tak to jo díky.. A když bych chtěl, aby se mi po odeslání text v inputu smazal tak dá? a jestli tak jak se to udělat?? |
||
Chamurappi Profil |
#6 · Zasláno: 14. 7. 2009, 20:38:08
Reaguji na Pinquiho:
„aby se mi po odeslání text v inputu smazal tak dá?“ Dá. „a jestli tak jak se to udělat??“ Udělat se to tak, že projdeš kolekci elements podobným cyklem, jako ji prochází post_xmlhttprequest, ale místo zjišťování a ukládání hodnot nastavíš všemu něco.value na něco.defaultValue. |
||
Pinqui Profil |
#7 · Zasláno: 15. 7. 2009, 07:58:31
Chamurappi
A když bych chtěl jen tomu jednomu inputu s typem text, nedá se to vepsat jen do stávajícího kódu? Třebaže by se tomu inputu dalo id nebo tak nějak?? |
||
Chamurappi Profil |
#8 · Zasláno: 15. 7. 2009, 10:13:04
Reaguji na Pinquiho:
„nedá se to vepsat jen do stávajícího kódu?“ Dá. „Třebaže by se tomu inputu dalo id nebo tak nějak??“ Klidně i podle jména. Tam, kde nastavuješ zobrazení „Odesláno.“, přidej form.jméno.value = form.jméno.defaultValue a máš hotovo… |
||
Pinqui Profil |
#9 · Zasláno: 15. 7. 2009, 11:24:14
Chamurappi
Díky moc :-) |
||
Pinqui Profil |
#10 · Zasláno: 15. 7. 2009, 13:38:34
Chamurappi
Ještě taková maličkost.. u selectu by se to napsalo stejnětak nebo jinak?? |
||
Chamurappi Profil |
#11 · Zasláno: 15. 7. 2009, 13:40:34 · Upravil/a: Chamurappi
Reaguji na Pinquiho:
Zkus to stejně a uvidíš, jestli to pojede. Myslím, že by mohlo. (A jsem si jist, že je rychlejší to zkusit než se zeptat.) |
||
Pinqui Profil |
#12 · Zasláno: 15. 7. 2009, 13:49:43
Chamurappi
Mno právě nevím zda to píšu dobře.. když nebudu mít zaškrtnutý checkbox chci aby se to nastavilo an defaultní hodnotu.. napsal jsem to takto: if(!form.checkbox.checked){ form.select.value = form.select.defaultValue; } ale nějako to nefunguje. viz: http://superpokec.cz/try/form.php |
||
Pinqui Profil |
#13 · Zasláno: 16. 7. 2009, 07:40:14
Vyřešeno:
if(!form.visp.checked){ form.nick.selectedIndex = 'value1'; //value1 - první hodnota, nebo ta kterou chceme defaultní } |
||
Časová prodleva: 15 let
|
0