Autor Zpráva
gardener
Profil
Ahoj,
snazim se vyparsovat pomoci Jquery data vracena v Json, asi nejak takto:

$("#productSearchpage").live("pageshow", function(event, ui){
                        			
			$.getJSON('http://www.akcniceny.cz/php/mapa-slev-data.php?box[left][lat]=50.5&box[left][lng]=14.5&box[right][lat]=51&box[right][lng]=15&group[]=3&typ[]=zbozi&full=televizor', function(data) {
			  $('.result').html('<p>' + data.jmeno + '</p>'
			    + '<p>' + data.ulice[1] + '</p>');
			});


Problem je, ze asi spatne pristupuji k atributum Json vystupu.

Snazil jsem se postupovat podle tutorialu na Jquery ale asi neco delam spatne, netusi nekdo prosim, kde by mohl byt problem?

Diky za kazdou radu.
Chamurappi
Profil
Reaguji na gardenera:
V tom JSONu na uvedené adrese je pole objektů. Přistupovat k prvkům pole neumíš?
Krom toho, pokud tvá stránka neběží na doméně www.akcniceny.cz, tak máš smůlu.
gardener
Profil
Smulu, takze to nemohu vyparsovat ve sve aplikaci?
pcmanik
Profil
gardener:
Chamurappi ti uz odpovedal.
gardener
Profil
Tak to tedy nechapu, mel jsem za to, ze je to ekvivalent k XML, proc tetdy maji na jquery tento priklad?

Tam preci take nic na server flickru nenahraji..

A da se to nejak vyresit? Mam moznost pristupovat jen k JSON datum.

<script>
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?",
  {
    tags: "cat",
    tagmode: "any",
    format: "json"
  },
  function(data) {
    $.each(data.items, function(i,item){
      $("<img/>").attr("src", item.media.m).appendTo("#images");
      if ( i == 3 ) return false;
    });
  });</script>
Chamurappi
Profil
Reaguji na gardenera:
mel jsem za to, ze je to ekvivalent k XML
Ani XML nemůžeš tahat z cizí domény.

proc tetdy maji na jquery tento priklad?
Ten ve skutečnosti netahá JSON AJAXem. Přestože ta funkce vypadá stejně, dělá něco úplně jiného — vyrábí externí <script> se src namířeným na danou adresu a ten je následně začleněn do dokumentu a vykonán (jako skript). Je to potenciální bezpečnostní díra, protože tu cizí adresu nemáš pod kontrolou a externí skripty mají nad stránkou absolutní moc (můžou sledovat všechno dění nebo něco rozbít, třeba omylem). Velkým serverům, jako je flickr.com, většina lidí důvěřuje.
joe
Profil
Nic ti ale nebrání v tom, aby sis při načtení stránky například pomocí PHP načetl ten výstup (z adresy, co dáváš jako parametr do getJSON) a teprve potom ho pomocí jQuery převedl na objekt a dál s ním pracoval.
gardener
Profil
Reaguji na joe:
Ano, to bych rad, tak jsem to delal i s XML, nejak takto:
function xmlParser(xml) {

//Hide .gif loader image if data are succesully fetched
// $('#load').fadeOut();

   $(xml).find("SHOPITEM").each(function () {
   	
	onLoad();
   $("ul").append("<li data-ajax=\"false\"><img  src=\""+$(this).find('IMGURL').text()+"\"/><h3><a data-ajax=\"false\" href=\"show_detail.html?nazev="+$(this).find('URL').text()+"&popis="+$(this).find('DESCRIPTION').text()+"\" >"+$(this).find('PRODUCT').text()+"</a></h3><p>"+$(this).find('PRICE_VAT').text()+" Kč</p><div class=\"shop-distance\"></div></li>");
         

});
//REFRESH MUST BE CALLED TO RIGHT DISPLAY OF LIST
$('ul').listview('refresh');


}



Ale vubec bohuzel nevim jak udelat v pripade JSONU..jinak ten vystup je posilany ted snad dobre..stacilo by to jako text/plain?
gardener
Profil
Tak tedy vazne nevim, mam tomu exportu zmenit mime type? Abych s nim mohl pracovat i mimo server?
gardener
Profil
Prosim administratory o smazani tohoto vlakna.
Moderátor Chamurappi: Bez hodně dobrého důvodu? To se samozřejmě zamítá.
gardener
Profil
Zadavatel si to nepreje kvuli zverejnenemu URL.
_es
Profil
gardener:
Zadavatel si to nepreje kvuli zverejnenemu URL.
Aký zadávateľ? Žiadneho zadávateľa si tu nespomenul.
Zadávateľ chce snáď parazitovať na webe akcniceny.cz?

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:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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

0