NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Neaktivní uživatel:5.9.2015 20:09

Hoj,

Učím se Apache Cordova, a potřebují nějak dostat data z php scriptu.
Z php jsem to vyřešil, vrací mi to JSON. Ale zaboha mi jquery nechce přebrat ty data, ani chybu to nepíše.
Celý den se s tím patlám, už jsem vyzkoušel snad vše co je na googlu, ale prostě to nechce fungovat.

Přikládám jeden z mých pokusu:

$(function () {
                    var listdiv = $("#webdataul");
                    $.ajax({
                        url: "http://www.stranka.cz/nejaky-skript/",
                        dataType: 'jsonp',
                        success: function (data) {
                            $.each(data, function (i, item) {
                                listdiv.append(item.name);
                            });
                        }
                    });
                });

Kus z JSONu:

[
    {
        "name":"Name1",
        "type":"1",
        ...
    },
    {
        "name":"Name2",
        "type":"2",
        ...
]

Dokáže mi s tím někdo poradit?

Editováno 5.9.2015 20:11
Odpovědět
5.9.2015 20:09
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:5.9.2015 20:14

Samozřejmě, jsem to zkoušel i normálně na webu, ale nefunguje a taky nepíše žádnou chybu.

Nahoru Odpovědět
5.9.2015 20:14
Neaktivní uživatelský účet
Avatar

Člen
Avatar
:5.9.2015 21:10
$.ajax({
            url : url,
            type : "get",
            async: false,
            success : function(data) {
                var parsed = JSON.parse(data);
                alert(parsed[0]);
            }
        });

Třeba takhle. Musíš to volat jako normální GET, a nějak nechápu tvůj styl parsování. Používej radši JSON.parse.

 
Nahoru Odpovědět
5.9.2015 21:10
Avatar
Odpovídá na
Neaktivní uživatel:5.9.2015 21:17

Díky, ale vypisuje chybu:

Failed to load resourcek.cor­s.a.crossDoma­in.send @ /vendor/jquery/jqu­ery.js:4

Editováno 5.9.2015 21:20
Nahoru Odpovědět
5.9.2015 21:17
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:5.9.2015 21:25

Celá chyba, nestihl jsem to vše překopírovat :-` .

Waring: Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/.
Error: Failed to load resource k.cors.a.cros­sDomain.send @ /vendor/jquery/jqu­ery.js:4

Nahoru Odpovědět
5.9.2015 21:25
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Michal Žůrek - misaz:5.9.2015 21:46

Asi záleží na jaké platformě vyvíjíš. Některé platformy požadují whitelist povolených zdrojů a jinam tě nepustí.

 
Nahoru Odpovědět
5.9.2015 21:46
Avatar
Odpovídá na brambora
Michal Žůrek - misaz:5.9.2015 21:50

tuto chybu to vypíše v případě ukázky od [me|]1760[/me|], která ma nastavený attribute ať se provádí synchronně - což je vskutku ubohost v JavaScriptu, který je celý asynchronní.

 
Nahoru Odpovědět
5.9.2015 21:50
Avatar
Odpovídá na Michal Žůrek - misaz
Neaktivní uživatel:5.9.2015 22:39

Hlavně mi to furt háže: Invalid character, na řádek, kde je JSON.parse().

Nemám náhodou JSON ve špatném formatu?

Editováno 5.9.2015 22:41
Nahoru Odpovědět
5.9.2015 22:39
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Michal Žůrek - misaz:5.9.2015 22:44

a si si jistý, že server tomu klientovy vrací to co má? To vypadá jako by tam ani nepřišel JSON, ale třeba nějaký warning, nebo nějaká notice.

 
Nahoru Odpovědět
5.9.2015 22:44
Avatar
Odpovídá na Michal Žůrek - misaz
Neaktivní uživatel:5.9.2015 23:03

Teď už si nejsem jistý :D

No, když si zadám normálně URL do prohlížeče, tak to vrací normálně, něco v tomhle smyslu:

[
    {
        "name":"Name1",
        "type":"1",
        ...
    },
    {
        "name":"Name2",
        "type":"2",
        ...
]

JSON.strigify vrací totež.

Editováno 5.9.2015 23:06
Nahoru Odpovědět
5.9.2015 23:03
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:5.9.2015 23:16

Tak už to funguje.
Problem byl v JSONu...
Ale furt nechápu jak to že to nebralo ten co jsem měl, když se používá všude, snad i tady...

Ten nový, vypadá takto:

"[
        {
                \u0022name\u0022:\u0022Name1\u0022,
                \u0022type\u0022:\u00226 1,
                ...
        },
        {
                \u0022name\u0022:\u0022Name2\u0022,
                \u0022type\u0022:\u00226 2,
                ...
        }
]
Editováno 5.9.2015 23:17
Nahoru Odpovědět
5.9.2015 23:16
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Michal Žůrek - misaz:6.9.2015 10:21

a není problém spíš než v JSONu v kódování? Je ten JSON ze serveru UTF-8?

 
Nahoru Odpovědět
6.9.2015 10:21
Avatar
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:6.9.2015 11:53

Zeptám se na to cos uvedl hned na začátku, ze zdrojaku je vidět že používáš jsonp ... Tedy cross site ... Ale nevidím už callback pro jsonp api ... Ani v URL ani v dalších parametrech jQueriovskeho ajaxu ... Z dokumentace vyplývá že jquery by ho chtěla ... Jak to tedy máš ?

Nahoru Odpovědět
6.9.2015 11:53
Neaktivní uživatelský účet
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 15 zpráv z 15.