Autor Zpráva
maarlin
Profil
Můj script volá vzdálený server via API (JSON formát), zkouším to na Flickr API:
$(document).ready(function(){
    $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?",
        function(data){
          alert (data.title);
        });
});

Což funguje bez problémů...
Ovšem v okamžiku, kdy samotný JSON export zkopíruji na vlastní server, jQuery to odmítá zpracovávat...
Přijde mi, jakoby Flickr k tomu posílal něco navíc, ale nevím co... v hlavičkách je pár věcí navíc, ale nemyslím si, že to jsou ty, které by způsobily to, že to jQuery nezpracuje...
http://kecej.cz/flickr.json

Napadlo mě ještě definovat přímo tu callback fci, ovšem nepřišel jsem na to, jak to potom zpracovat v jQuery... http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=funkce
Aichi
Profil
vidím na první pohled rozdíl, v tom api volání je volána ta funkce, v tom tvém na kecej, název funkce nepředáváš, tudíž se ti nevolá.
ah01
Profil
maarlin
Proč používáš JSONP, když máš zdroj dat na svém serveru?
maarlin
Profil
[#2] Na Flickru je sice předáván parametr jsoncallback, ovšem ten otazník myslím právě zajistí, že žádná funkce se volat nebude... resp. http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=? nevrací žádnou funkci, když na to koukám přes browser, jak jinak tedy zajišťuje, že se funkce volá? jQuery to volá nějak jinak, než prohlížeč, že se mu nabídne funkce?
[#3] Zdroj dat nebude přímo na mém serveru, ale na jiném a je nutné to řešit nějak takto /ideálně JSON, AJAX už jsou data navíc/.
maarlin
Profil
Už jsem na to přišel - jQuery samo o sobě totiž nahradí znak ? svým řetězcem... :-)
Kdo by hledal něco bližšího k tomuto tématu, poslouží dobře http://www.ibm.com/developerworks/library/wa-aj-jsonp1/
ah01
Profil
maarlin
Ona stačí samotná dokumentace jQuery - hned v druhém odstavci: http://docs.jquery.com/Ajax/jQuery.getJSON#urldatacallback

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:

0