getJSON Synchron
ZIEL: das, Was ich bin nach, um Daten aus einer Datenbank abrufen und aktualisieren main.php (deutlicher durch draw_polygon) jedes mal, wenn etwas Hinzugefügt wird, in der Datenbank (nach $.ajax submit_to_db.php).
Also im Grunde habe ich eine main.php das wird ajax ein php-erhalten Sie ein array gespeichert werden, um Datenbank, eine json-Aufruf einer anderen php ein array zurückgeben, werden von der main.php.
$(document).ready(function() {
get_from_db();
$('#button_cancel').click(function(){
$.ajax({
url: 'submit_to_db.php',
type: 'POST',
data: {list_item: selected_from_list},
success: function(result){
...
get_from_db();
}
});
});
function get_from_db(){
$.getJSON('get_from_db.php', function(data) {
...
draw_polygon(data);
});
}
});
In meinem Fall, was ich Tat, war eine get_from_db
Funktionsaufruf für getJSON
um tatsächlich Daten aus einer Datenbank abrufen und die Daten werden verwendet, um draw_polygon
. Aber ist das, wie es getan werden sollte? Ich bin ein absoluter Neuling und dies ist mein erstes mal, um zu versuchen getJSON
und ajax auch um ehrlich zu sein. Also meine Frage: Wie ist die asynchrone Arbeit eigentlich? Gibt es eine andere Möglichkeit, dieses anstatt call-Funktion get_from_db
mit getJSON
(es ist nicht synchron, oder? das ist, warum es nicht die Seite aktualisieren, wenn es nicht innerhalb einer Funktion?) Die ganze Zeit - wie $.ajax
mit async: false
(ich konnte es nicht auf der Arbeit übrigens). Mein Ansatz funktioniert, aber ich dachte vielleicht gibt es andere bessere Möglichkeiten, es zu tun. Ich würde gerne lernen, wie. Vielen Dank im Voraus. Ich hoffe, ich mache keinen Sinn.
Um es noch klarer, hier ist, was ich erreichen möchte:
@start
auf der Seite, abrufen von Daten aus einer Datenbank (derzeit übergetJSON
)- Malen oder zeichnen in
canvas
mit derdata
- Wenn ich auf den button für die Aktualisierung der Datenbank
- Möchte ich AUTOMATISCH die Daten wieder zu aktualisieren, die änderungen im canvas-Bereich.
InformationsquelleAutor der Frage Fred | 2012-10-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Asynchronusly bedeutet, die Anfrage wird im hintergrund ausgeführt, und ruft die Funktion zurück, wenn er bekam eine Antwort. Diese Methode ist am besten, wenn Sie wollen, um ein Ergebnis, sondern ermöglichen die Nutzung Ihrer app innerhalb der Anfrage. Wenn Sie möchten, um eine direkte Antwort, werfen Sie einen Blick auf eine synchron Anfrage. dieser Antrag unterbricht die Skript-Ausführung, bis er bekam eine Antwort, und der Benutzer kann nichts tun, bis die Antwort wurde erhalten. Sie können Umschalten über:
So zum Beispiel:
InformationsquelleAutor der Antwort tobspr
Da $.getJSON() verwendet ajax-Konfigurationen, nur die Globale ajax-configs:
InformationsquelleAutor der Antwort cchristelis
$.getJSON(), nicht akzeptieren, eine Konfiguration, so wie es in den docs, es ist eine kürzere version von:
Also einfach schreiben Sie Ihre Anfrage in Bezug auf, und async:false wird einfach funktionieren, wie Sie es erwarten.
InformationsquelleAutor der Antwort Robert Moskal
$.getJSON()
ist eine Kurznotation für$.ajax()
konfiguriert werden können, um synchron (siehe jQuery.getJSON und JQuery.ajax):Versuchen vermeiden synchrone Aufrufe obwohl. Zitat von jQuery-doc (siehe async-prop):
Möchten Sie vielleicht versuchen, jQuery Deferreds wie diese:
InformationsquelleAutor der Antwort R. Oosterholt