Wie bekommt man Daten aus der JQuery getJSON Rückruf
Ich brauche, um das JSON-Objekt-Daten aus der callback-Funktion, so dass ich Bearbeiten kann, es später in der Seite, nicht innerhalb der callback-wie ich jetzt bin. Es muss erkennbar sein für alle anderen, wie ich kann nicht sehen, nichts darüber geschrieben. Kann mir jemand sagen, wie es zu tun?
Hier ist mein code:
<script type="text/javascript" src="/site_media/js/jstree/_lib/jquery.js"></script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
function initialize() {
var myLatlng = new google.maps.LatLng(-25.363882,131.044922);
var myOptions = {
zoom: 4,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP,
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
return map;
}
function add_marker(map, lat, long) {
var marker_image='/site_media/images/map_marker.png';
var myLatlng = new google.maps.LatLng(lat,long);
title='title';
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title:title,
icon:marker_image
});
//map.panTo(myLatlng);
}
//window.onload=initialize();
setTimeout('map=initialize();',2000);
$.getJSON("/ajax/get", function(data) {
$.each(data, function(i,val) {
latitude = val.fields.latitude;
longitude = val.fields.longitude;
add_marker(map, latitude, longitude);
});
});
</script>
<div id="map_canvas" style="width: 500px; height: 300px"></div>
Ihre Frage ist nicht klar. Die getJSON-Aufruf endet mit dem Aufruf der ausgewählten callback-Funktion. Sie verarbeiten, dass die Daten innerhalb dieser Funktion, genau wie Sie getan haben. Was ist das problem?
Warum hast du löschen Sie Ihre die Vorherige Frage? Ich habe kopiert meine Antwort zurück.
Sorry Jungs, nur zu lernen, stackoverflow als luch als alles andere!
Ich will nicht zur Verarbeitung der zurückgegebenen Daten in den Rückruf, ich möchte den cache der browser, so dass ich nicht brauchen, um es zu Holen jedes mal, wenn ich will, um es anzuzeigen. Dann das nächste mal, wenn ich überprüfen möchte per ajax, wenn es mehr Marker hinzufügen, dass ich den cache prüfen, finden die letzten Markierung Hinzugefügt und die Abfrage für mehr seitdem. Es wird sparen Sie viel server-Last, da die Daten kommt wieder viel kleiner sein.
Mein plan war, zum speichern der letzten Markierung-ID zurückgegeben, und ändern Sie dann den Ajax-request übergeben Sie es als parameter. Es sei denn, ich lese die Markierungen auf der Karte noch besitzen das problem, wie man es aus dem callback. Ich denke, ich werde Lesen müssen, um die Marker als der Rückruf ist async. Kein Wunder, das ist hart!
Warum hast du löschen Sie Ihre die Vorherige Frage? Ich habe kopiert meine Antwort zurück.
Sorry Jungs, nur zu lernen, stackoverflow als luch als alles andere!
Ich will nicht zur Verarbeitung der zurückgegebenen Daten in den Rückruf, ich möchte den cache der browser, so dass ich nicht brauchen, um es zu Holen jedes mal, wenn ich will, um es anzuzeigen. Dann das nächste mal, wenn ich überprüfen möchte per ajax, wenn es mehr Marker hinzufügen, dass ich den cache prüfen, finden die letzten Markierung Hinzugefügt und die Abfrage für mehr seitdem. Es wird sparen Sie viel server-Last, da die Daten kommt wieder viel kleiner sein.
Mein plan war, zum speichern der letzten Markierung-ID zurückgegeben, und ändern Sie dann den Ajax-request übergeben Sie es als parameter. Es sei denn, ich lese die Markierungen auf der Karte noch besitzen das problem, wie man es aus dem callback. Ich denke, ich werde Lesen müssen, um die Marker als der Rückruf ist async. Kein Wunder, das ist hart!
InformationsquelleAutor Rich | 2010-09-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Reichen, es ist eigentlich viel einfacher als Sie denken (zumindest scheint es so). Ich gehe davon aus, dass dein Marker eine
id
oder so etwas. Möglicherweise müssen Sie passen Sie diese Arbeit, wie Sie wollen:Dann auf Ihrem server haben, tun Sie etwas wie: "Wenn
marker_id
hat einen Wert, der für jeden marker nach, die id, ansonsten kehren Sie alle".Erinnern! Jeder marker muss eine id für mein code:
Vergessen Sie nicht zu Stimmen, bis Antworten, die Sie nützlich gefunden, und akzeptieren Sie die Antwort (wenn überhaupt), dass dein problem gelöst.
OK, werde das mal tun, danke
Diese Antwort mein problem gelöst, nur Globale Variablen verwenden, ganz einfach! Danke Doug
Sie sind willkommen Rich! Froh war es, was Sie brauchte!
InformationsquelleAutor Doug Neiner
Müssen Sie ausführen
$.getJSON()
(und andere Initialisierung Sachen, die abhängig von der Anwesenheit bestimmter HTML-Elemente des Dokuments) währendwindow.onload
oder mehr der jQuery-Weg, während$(document).ready()
. Ansonsten ist es in der Tat ausgeführt wurde, zu früh, nämlich sofort, wenn der webbrowser ruft die JS-code, weit, bevor das HTML-Dokument fertig geladen ist.Das problem mit diesem Muster ist, dass es ist alles über ajax und nicht genug über die Seite und dessen Inhalt. Ich will die Karte dann fügen Sie Marker hinzu, sobald Sie verfügbar sind, d.h., zeitlich ajax-Aufrufe, nicht getaktete Karte erstellt. Nebenbei, der Grund warum ich die Karte in das timer-statt body onload oder windowonload ist, dass ich noch nicht herausgefunden, wie man die map-Objekt aus dem Fenster.onload, so dass ich dann Marker hinzufügen. Ich in der Regel, wie die Dinge schwierig für mich und Sie können sehen, ich habe es getan in dieser Zeit, wie gut!
Sie haben nicht erklärt, wie all diese zeitgesteuerte updates funktionieren wird. Wie funktioniert der AJAX-Aufruf ändern aufrufen? usw.... und noch wichtiger, warum tun Sie müssen regelmäßige server-Aufrufe statt nur einem Anruf alle Marken.
OK, es ist ganz einfach, weil zu der Zeit Ein wir haben x Anzahl der Marker und an mal B wir haben y-Marker. Erscheinen mögen, sind Sie bei 100 pro Stunde vielleicht. Also werde ich pole der server das erste mal mit so etwas wie /data/get/0 und das nächste mal, /data/get/10234, wo 10234 ist die Letzte Markierung erhalten. Auf diese Weise habe ich nicht erhalten, die ganze Menge wieder. So will ich ziehen Sie eine leere Karte, die setinterval-Funktion des ajax-calls und zeichnen marker jedes mal, wenn ich rufe, je nachdem auf was für ein Ergebnis bekomme ich zurück. Wie bekommt man eine neue Zeile, wenn, Kommentare hinzufügen!! Danke Peter, Reich
InformationsquelleAutor BalusC
Es ist schwer zu helfen, ohne eine klarere Vorstellung davon, was Sie versuchen zu erreichen, aber es klingt wie Sie versuchen, zu verwalten eine große Anzahl von Markern.
Gibt es tatsächlich bereits existierenden Lösungen für diese. Werfen Sie einen Blick auf Umgang mit Großen Mengen von Markierungen in Google Maps.
Google Marker-Manager ist in der GMaps-Utility-Library. Vielleicht finden Sie einige der Beschreibungen von Beispielen nützlich.
Der marker-manager ist eingeführt hier, und es gibt 2 Beispiele auf dieser Seite kannst du schauen: ein Wetter Karte, und Google-Büros.
Weitere Infos können Sie den Blick auf die Dokumentation der Open-Source-Marker-Manager.
Natürlich, müssen Sie zuerst erhalten Sie eine einfache Karte mit nur einem Satz von Markern, die anzeigen laufen. Ich glaube Balus " beantwortet werden, helfen Sie mit, dass.
InformationsquelleAutor Peter Ajtai