| 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: 16 let
|
|||
0