Autor Zpráva
kubatt
Profil
čaute prosímvás hledám řešení co vezme všechny pole formuláře a odešle přes ajax našel sem si toto
<script type="text/javascript">
/** Odeslání formuláře přes XMLHttp požadavek
* @param function funkce zajišťující obsluhu při změně stavu požadavku, dostane parametr s XMLHttp objektem
* @param string URL požadavku
* @param object formulář k odeslání
* @param object 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>
<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>
<span id="stav"></span>
<form action="" method="post" onsubmit="return !odeslat(this);">

ale nějak to nefunguje :( nevíte prosím kde je chyba aby se to dalo použít? díky :)
_es
Profil
kubatt:
Neúplné informácie.

co vezme všechny pole formuláře
ale nějak to nefunguje
Akého formulára, aké polia?

Prípadne skús spraviť živú ukážku.
kubatt
Profil
ale to je jen ukázka to má vzít všechny formulářové pole které dám a odeslat přes ajax všechno tam je stačí se nato podívat ;)
_es
Profil
kubatt:
má vzít všechny formulářové pole které dám
No a aké konkrétne formulárové polia si tam dal, že ti to „nejak nefunguje“?
A čo presne znamená, že to „nejak nefunguje“?
joe
Profil
Nikde tam nevidím, že to uloží i input s typem "text" a "password", dál textareau a další nové HTML5 inputy.
kubatt
Profil
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));
            }
        }
    }


?
_es
Profil
kubatt:
?
[#4] _es?
kubatt
Profil
no toto pokud vidíš a umíš JS tak poznáš že toto vytahne celí formulář

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: