Nem működő ajax json város keresésnél

Nem működő ajax json város keresésnél
2012-02-19T14:06:04+01:00
2012-02-19T20:50:12+01:00
2022-11-24T18:40:37+01:00
E.D.
Egy irányítószám alapján való megye és városkeresőt szeretnék megalkotni AJAX-al. A kérés x domainről menne és y domain-re érkezne, ahol adatbázisból előhalászódik a szükséges infó, majd megy vissza x domain-nek.

x domain-en lévő JavaScript (kikommentezve a régebbi próbálkozások):
function varoskereso(irsz) { var xmlhttp=false; try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } if (!xmlhttp && typeof XMLHttpRequest!='undefined') { try { xmlhttp = new XMLHttpRequest(); } catch (e) { xmlhttp=false; } } if (!xmlhttp && window.createRequest) { try { xmlhttp = window.createRequest(); } catch (e) { xmlhttp=false; } } /* xmlhttp.open("GET", 'http://iranyitoszam-varos-megye-kereses.darkrpg.hu/keres.php?irsz='+irsz, true); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4) { alert('l'+xmlhttp.responseText) } } xmlhttp.send(null) if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else { xmlhttp = new AciveXObject("Microsoft.XMLHTTP"); } */ xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4) { alert('B'+xmlhttp.getAllResponseHeaders()) } if (xmlhttp.readyState==4 && xmlhttp.status==200) { var Obj = eval('(' + xmlhttp.responseText + ')'); for(elem in Obj) { alert("id: "+elem+" Érték: "+tomb[elem]); } } } xmlhttp.open("GET", 'http://iranyitoszam-varos-megye-kereses.darkrpg.hu/keres.php?irsz='+irsz, true); xmlhttp.send(); }

y domain-en lévő php:

<?php if ((int)$_GET["irsz"]>0) { $dbc = mysqli_connect('*******', '*****', '********', '******') or die('valami nem ok az adatbázishoz történé kapcsolódáskor'); $query = "select iranyitoszam, helyiseg, megye from iranyitoszam where iranyitoszam=".(int)$_GET["irsz"]; mysqli_query($dbc, 'SET NAMES "utf8" collate "utf8_hungarian_ci"'); $data = mysqli_query($dbc, $query); $cities = array(); while ($row = mysqli_fetch_array($data)) { $cities[$row['iranyitoszam']]["helyiseg"] = $row['helyiseg']; $cities[$row['iranyitoszam']]["megye"] = $row['megye']; } echo json_encode($cities); } ?>

A php-t futtatva kapok eredményt, pl ezt:
{"3300":{"helyiseg":"Eger","megye":"Heves"}}

Javascriptőb futtatva semmi. FireBug-al megnézve a kérés lefut 200-as státusszal rendebn... Fejlécet is látok, de a FireBug-ban a "válasz" és a "html" fülek üresek... nem tudom, hogy ez jó-e...

Mit ronthatok el? A JavaScript bele sem megy a
if (xmlhttp.readyState==4 && xmlhttp.status==200)
igaz ágába...
Mutasd a teljes hozzászólást!
Ajax-ban nem endélyezett a crossdomain kérés - az
xmlhttp.status
pedig 0-t kap és emiatt nem megy bele az ifbe sem.

Alternatív megoldás: rejtett iframe-be hívod meg és átadsz neki egy függvénynevet, amit majd meghív az iframe-ből a keres.php:

html:
<iframe id="kereso_proxy" style="display:none"></iframe>

js:
function varoskereso(irsz) { document.getElementById('kereso_proxy').src = 'http://.../keres.php?irsz='+irsz+'&callback=varoskereso_eredmeny'; } function varoskereso_eredmeny(data) { alert('Eredmény:' + data); }

php (ellenőrzéstől eltekintve):

... echo "<script type='text/javascript'>parent.".$_GET['callback']."('".json_encode($cities)."');</script>";
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd