Autor Zpráva
lokix
Profil
Zdravím všechny,

potřebuju poradit už jsem z toho šílený ;o) Pokouším se přihlásit pomocí jquery a ajaxu bez refresh stránky. Samotné odeslání dat ze 2 inputů (není to form) přes jquery.ajax() je v pořádku a na straně serveru (v php) dostanu z db podle přijatých údajů json pole ve tvaru: [{"username":"xxx","surname":"xxx","email":"xxx@seznam.cz","ulice":"xxx","cp":"xxx","mesto":"xxx","psc":"xxx"}]
Což je super, Ale už nedokážu pracovat s vrácenými daty. Pokud se pokusím vypsat alertem dostanu toto: undefined. Jde mi o to, že vrácená data chci apendnout k dalším inputů, které jsou pod tím na stránce a ve formu - toto už bych zvládl.

Zde je kód:
$(".prihlaseni").click(function(){
                var formData2 = {
                'email'                 : $('input[name=email2]').val(),
                'password'             : $('input[name=password2]').val()
          };
// Ajax
                $.ajax({
        url: "/dev/balonparty/inc/login.php",    
        type: "POST",        
                data: formData2,
                dataType: 'json',
                cache: false,          
//        success: function(data)
        async: false,
        success: function (data) {
            console.log(data);
               alert(data.username); -> vypíše undefined.
//            alert(JSON.stringify(data)); -> toto vypíše json, ale nevím jak na samotné klíče.
            

        }
            });
        });

Žádám kohokoliv o radu jak na to, protože už jsem zkoušel vše. Jinak omluvte kvalitu kódu, jquery a ajax se teprve učím.
Xethilos
Profil
Smazáno..
Chamurappi
Profil
Reaguji na lokixe:
Pokud si ze serveru posíláš JS pole s jednou položkou, tak ta položka je v data[0].


Reaguji na Xethilose:
Když uvádí dataType: 'json', tak hlavičku nepotřebuje, ne?
Xethilos
Profil
Chamurappi:
Nevšiml jsem si toho, moje řešení nepomůže, máš pravdu je tam pole a vnořený objekt.
lokix
Profil
Chamurappi:
Tak moc díky. Já jsem se s tím páral všemožně, ale ono jde opravdu snadno přistupovat k data[0].klíč.
Vyřešno ;o)
_es
Profil
lokix:
ono jde opravdu snadno přistupovat k data[0].klíč.
A nebolo by jednoduchšie namiesto poľa s jednou položkou odosielať len tú jednu položku - objekt? Teda odstrániť tie nadbytočné hranaté zátvorky?
lokix
Profil
_es:
No ono jde o 7 položek, které si z toho předvyplním do formu.
[{"username":"xxx","surname":"xxx","email":"xxx@seznam.cz","ulice":"xxx","cp":"xxx","mesto":"xxx","psc":"xxx"}]
Potřebuju všechny ;o)
_es
Profil
lokix [#7]:
No ale tých 7 položiek predsa nemusíš mať „naládovaných“ v jednom prvku jednoprvkového poľa. Môžeš mať predsa len {"username":"xxx","surname":"xxx","email":"xxx@seznam.cz","ulice":"xxx","cp":"xxx","mesto":"xxx","psc":"xxx"} a potom namiesto data[0].klíč k nim pristupovať ako k data.klíč.
lokix
Profil
_es:Aha chápu, ale jak se k tomu dopracuji když (myslel jsem, že dobře) v php generuju ty data takto:

$data[] = array(
            "username" => $row['username'] ,
            "surname" => $row['surname'] ,
            "email" => $row['email'] ,
            "ulice" => $row['ulice'] ,
            "cp" => $row['cp'] ,
            "mesto" => $row['mesto'] ,
            "psc" => $row['psc']
        );    
echo json_encode($data);
a vznikne mi při čtení toto: [{"username":"xxx","surname":"xxx","email":"xxx@seznam.cz","ulice":"xxx","cp":"xxx","mesto":"xxx","psc":"xxx"}]
Ty "[]" závorky tam mám a zbavit se jich čistě neumím - jen prasácky. S js,jquery teprve začínám a potřebuju pochopit ještě dost základů, to vím a kdybych to nepotřeboval do mého projektu, který je normál html+php5+mysql tak se budu učit, ale doba je zlá ;o) a musím se učit už za pochodu. Můžeš tedy poradit jak? Je to normál js pole pokud to chápu dobře.

A nechci Vás Pánové zneužívat, ale měl bych dotaz s tím související.
Součástí té stránky - jedná se o košík (eshopu). Potřeboval bych poradit, nakopnout co je lepší a jak na to. Potřebuju z inputu (nevím kolik jich dopředu bude) kde je množství ks a vedle cena za kus počítat opět nejlépe přes ajax/jquery když si uživatel změní počet aby se přepočetla cena. Např.: zboží 1 5 ks cena za kus->100 celkem cena. Pod tím zase produkt 2 atd. Pod produkty mám tlačítko přepočítat. Napadlo mě to udělat tak, že zase data pošlu na php kde je jednoduše sečtu a vrátím zpět jako tady, ale při vyšším počtu budu potřebovat nějaký cyklus v js ne?
A jako poslední sečtu celkové ceny těch produktů a dole mám možnosti dopravy a balné tedy 2x 2 radioboxy, které potřebuju sečíst a následně sečíst vše dohromady: zboží celkem, zboží 2 celkem, atd... + doprava + balné. U dopravy je bud 95 kč nebo 0 - osobně a u balného 24
+ 0 - osobně.
- Toto je již vyřešeno. Měl jsem chybku, ale podařilo se na to přijít:
$().ready(function () {
    function calcscore() {
        var score = 0;
        $(".calc:checked").each(function () {
            score += parseInt($(this).val(), 10);
        });
        $("input[name=sum]").value(score)
    }
    $(".calc").change(function () {
        calcscore()
    });
});

Vím, že sem to tu vychrlil a ani nečekám, že to za mě někdo udělá, ale tady v js,jquery/ajaxu jsem si dost nejistej, ale chci se to na tom učit.
Určitě moc všem děkuji již za předešlé rady a trpělivost.
juriad
Profil
lokix:
Právě že se jich zbavíš jednoduše. Prostě je z toho prvního řádku odstraň.
$data = array(
lokix
Profil
juriad:
Aha díky ;o)

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: