Autor Zpráva
rudla
Profil
Zdravím,
mám rozdělaný jQuery AJAX script z webu jaknajquery.cz/. Na stránce v kódu je napsáno

jQuery.ajax({
    url: "skript.php",
    type: "POST",
    data: "ukazka=1",
    cache: false,
    dataType: "xml",
    success: function(vracenaData) {
         alert(vracenaData);
    }
});

Script by měl po úspěšném zavolání skript.php vrátit vracenaData, jenže když jsem to zkusil, nic se nestalo.

Přišel jsem na to, že jsem asi nepochopil správně, jak to má fungovat. Mám ten dojem, že by to mělo vypsat obsah skript.php, tedy to, co skript vypisuje (např echo"pes";, tedy "pes"). Při zavolání skriptu mi ale konzola vždy vypíše jen ReferenceError: vracenaData is not defined a alert nevypíše nic.

Díky za radu,
rudla.
Taps
Profil
rudla:
Mě funguje níže uvedené, záleží také s jakým typem dat pracuješ
$(document).ready(function($){
$("#ulozit").click(function() {

    var url = "zpracuj_data.php"; // the script where you handle the form input.

    $.ajax({
           type: "POST",
           url: url,
           data: $("#id_formulare").serialize(), // serializes the form's elements.
           success: function(data)
           {
               alert('Zpracováno'); // show response from the php script.
           }
         });

    return false; // avoid to execute the actual submit of the form.
});
     }



Tvůj kod, zkus upravit takto
jQuery.ajax({
    url: "skript.php",
    type: "POST",
    vracenaData: "ukazka=1",
    cache: false,
    dataType: "xml",
    success: function(vracenaData) {
         alert(vracenaData);
    }
});
_es
Profil
rudla:
Síce s jQuery nerobím, no podľa dokumentácie (api.jquery.com/jQuery.ajax) to nijako rozumne fungovať nemôže (parameter dataType: "xml").
rudla
Profil
Taps:
To už jsem zkoušel a nepomohlo mi to.

_es:
V tom případě co mám použít za typ? Nebo jinak?
Taps
Profil
rudla:
zkus kod, který jsem ti vložil do diskuse
_es
Profil
rudla:
V tom případě co mám použít za typ?
Ja neviem, aký „typ“ vracia skript skript.php. Buď vracia nejaký typ, považovaný za XML, vtedy nemá zmysel funkcia vo vlastnosti success, alebo vracia nejaký iný „typ“ a vtedy nemá zmysel dataType: "xml".
rudla
Profil
_es:
PHP v tomto případě vrací text. Ale "txt" nefunguje.

Taps:
Který? Ten první?
Taps
Profil
rudla
Který? Ten první?
Ano
juriad
Profil
rudla:
Přečetl jsi si vůbec odkázanou dokumentaci? Jakých hodnot může dataType nabývat?
xml, html, script, json, jsonp, text
"text": A plain text string.
rudla
Profil
juriad:
Přiznám se, nečetl. Ale i když jsem nastavil type na "text", vracenaData jsou stále not defined.
Chamurappi
Profil
Reaguji na rudlu:
Při zavolání skriptu mi ale konzola vždy vypíše jen ReferenceError: vracenaData is not defined
Není možné. Skript uvedený v prvním příspěvku není schopen vyvolat takovouto chybu. Chyba je někde jinde.
Hláška říká, že zkoušíš číst z proměnné, která vůbec neexistuje. Domnívám se, že alert(vracenaData) ve skutečnosti nemáš uvnitř success.

Proč jsi nezůstal u menších osvědčených funkcí na AJAX?
rudla
Profil
Chamurappi:
Pravda, alert jsem spouštěl mimo success. V tomto případě nevyhodí hlášku v konzoli, ale ani nic nezobrazí. Měl by obsah vracenaData. Jsem zpátky tam, kde jsem byl. :(
Chamurappi
Profil
Reaguji na Tapse (druhou část [#2]):
    vracenaData: "ukazka=1",
Marně přemýšlím, co a proč by tohle mělo dělat…


Reaguji na rudlu:
V tomto případě nevyhodí hlášku v konzoli, ale ani nic nezobrazí.
Protože se nejspíš funkce v successu nezavolá.

Jsem zpátky tam, kde jsem byl. :(
Myslím, že zbytečně zmatkuješ. Budeš-li mít alert uvnitř successu a v dataType ten zmíněný "text", mělo by to šlapat. Jestli ne, dodej odkaz na živou ukázku.
rudla
Profil
Chamurappi:
Tak jsem namátkově hledal možné příčiny a zjistil jsem, že do volaného skriptu posílám data, pocházející z podmínky, která nefunguje správně, čímž celé téma uzavírám tím, že jsem udělal blbost a hledal jsem ji jinde.

Jestliže usoudíš, Chamurappi, že nemá cenu vlákno nechávat, klidně to smaž, chybu přiznávám. :/
Každopádně díky moc za snahu. Funguje to.

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: