|
You last visited: Today at 02:01
Advertisement
jQuery request.done keine überspeicherung
Discussion on jQuery request.done keine überspeicherung within the Web Development forum part of the Coders Den category.
05/17/2013, 22:03
|
#16
|
elite*gold: 0
Join Date: Apr 2005
Posts: 323
Received Thanks: 114
|
Quote:
Originally Posted by mydoom
Du kannst ja mal zum Spaß ne Endlosschleife in js starten und dir ansehen was passiert. Warum sollte man nicht einfach alles in der Callback-Funktion bearbeiten?
|
Was hat eine Endlosschleife mit einem request zu tun? Irgendwann bekommst du ein 404 oder der Browser wirft einen timeout.
Was die Frage angeht, weil du Inhalte brauchst bevor das script weiterläuft. Wie gesagt, kann vorkommen. Nicht unbedingt gutes Design aber ich hatte schon mehrere Fälle wo ich es tun musste weil alles andere zu aufwändig gewesen wäre.
|
|
|
05/18/2013, 14:07
|
#17
|
Administrator
elite*gold: 41624
Join Date: Jan 2010
Posts: 22,728
Received Thanks: 12,655
|
Ich versuche mal wieder zurück zum eigentlichen Problem zu kommen. Scheinbar scheint es hier einfach noch etwas am Verständnis für AJAX-Requests zu fehlen.
Ich würde dir empfehlen, für den Anfang erstmal auf Abkürzungen wie $.post() zu verzichten und einfach $.ajax() zu verwenden, denn dabei ist viel klarer, was du eigentlich tust. Ohne den genauen Kontext zu kennen, würde ich pauschal erstmal davon ausgehen, dass du hier kein synchrones Request benötigst.
Wenn der Nutzer auf asynchron geladene Inhalte wartet, blendet man gerne irgendein animiertes Status Bild ein, welches dann, nachdem die Inhalte vorliegen, wieder ausblendet. Hier mal ein kurzes Beispiel dazu auf Basis deines ersten Beispiels:
Code:
var test = 'TestString';
// Status img anzeigen
$('#some_status_img').show();
$.ajax({
url: 'controller/Save_Col.php',
data: dataToSend,
dataType: 'json',
type: 'POST',
success: function(data) {
// AJAX-Request abgeschlossen, data enthält den bereits geparsten JSON-String
// Status img ausblenden
$('#some_status_img').hide();
test = data.msg;
console.log("TestVariable_Done: " + test); //MsgString
}
});
// AJAX-Request ist hier noch nicht abgeschlossen, der nachfolgende Aufruf ergibt den Wert, mit dem test initialisiert worden ist
console.log("TestVariable: " + test); //TestString sollte jedoch MsgString sein
Du musst dir einfach abgewöhnen, hierbei prozedural zu denken und stattdessen in Callbacks denken.
Man kann sich das ein bisschen mit Dominosteinen verdeutlichen: Während du bei einem prozeduralen Script z.B. 100 Steine in einer Reihe hast, die alle nacheinander umfallen, wenn du den ersten umstößt, sieht die Sache bei verwendung asynchroner Requests mit Auswertung über Callback-Funktionen etwas anders aus. Hier hättest du für das vorherige Beispiel etwa 4 seperate Reihen à 25 Steine, wobei die nächte Reihe immer erst dann angestoßen wird, wenn die durch die erste Reihe gestartete Aktion abgeschlossen ist.
|
|
|
05/18/2013, 14:43
|
#18
|
elite*gold: 0
Join Date: Jan 2010
Posts: 13,150
Received Thanks: 3,206
|
Quote:
Originally Posted by Muddy Waters
Ich versuche mal wieder zurück zum eigentlichen Problem zu kommen. Scheinbar scheint es hier einfach noch etwas am Verständnis für AJAX-Requests zu fehlen.
Ich würde dir empfehlen, für den Anfang erstmal auf Abkürzungen wie $.post() zu verzichten und einfach $.ajax() zu verwenden, denn dabei ist viel klarer, was du eigentlich tust. Ohne den genauen Kontext zu kennen, würde ich pauschal erstmal nicht davon ausgehen, dass du hier kein synchrones Request benötigst.
Wenn der Nutzer auf asynchron geladene Inhalte wartet, blendet man gerne irgendein animiertes Status Bild ein, welches dann, nachdem die Inhalte vorliegen, wieder ausblendet. Hier mal ein kurzes Beispiel dazu auf Basis deines ersten Beispiels:
Code:
var test = 'TestString';
// Status img anzeigen
$('#some_status_img').show();
$.ajax({
url: 'controller/Save_Col.php',
data: dataToSend,
dataType: 'json',
type: 'POST',
success: function(data) {
// AJAX-Request abgeschlossen, data enthält den bereits geparsten JSON-String
// Status img ausblenden
$('#some_status_img').hide();
test = data.msg;
console.log("TestVariable_Done: " + test); //MsgString
}
});
// AJAX-Request ist hier noch nicht abgeschlossen, der nachfolgende Aufruf ergibt den Wert, mit dem test initialisiert worden ist
console.log("TestVariable: " + test); //TestString sollte jedoch MsgString sein
Du musst dir einfach abgewöhnen, hierbei prozedural zu denken und stattdessen in Callbacks denken.
Man kann sich das ein bisschen mit Dominosteinen verdeutlichen: Während du bei einem prozeduralen Script z.B. 100 Steine in einer Reihe hast, die alle nacheinander umfallen, wenn du den ersten umstößt, sieht die Sache bei verwendung asynchroner Requests mit Auswertung über Callback-Funktionen etwas anders aus. Hier hättest du für das vorherige Beispiel etwa 4 seperate Reihen à 25 Steine, wobei die nächte Reihe immer erst dann angestoßen wird, wenn die durch die erste Reihe gestartete Aktion abgeschlossen ist.
|
Ich danke dir für die genau erklärung dahinter, das Problem hinter all dem war scheinbar das Verständnis meiner Seits in der Umstellung von $.ajax() auf $.post(), da ich davor immer nur $.ajax nutzte.
Das Problem hat sich gelöst, danke vielmals
|
|
|
 |
|
Similar Threads
|
jquery Tab Menü Problem
12/17/2012 - Web Development - 2 Replies
Hallo epvp,
habe ein Problem mit einem jquery tab script was ich aus einer alten webseite von mir kopiert habe. Das Script funktioniert soweit, aber bei jedem klick auf die Tabs ändert sich die Url und #tab2 zb steht hinten dran. Das ist soweit auch okay, nur verändert sich auch der Bildausschnitt. Bedeutet, man sieht nichtmehr alles sondern nurnoch den Teil ab den Tabs.
Hoffe das war verständlich.. wie sorg ich dafür dass nicht immer an diesen Punkt gesprungen wird?
<script...
|
jQuery Problem?!
09/08/2012 - Web Development - 4 Replies
Hallo,
also ich möchte nun ein bisschen jQuery ausprobieren.
Mit Firebug funktioniert alles hervorragend. Nun möchte ich das
in eine .js Datei schreiben. Bloss es wird nicht ausgeführt.
Erstmal habe ich jQuery richtig eingebunden:
<script src="http://code.jquery.com/jquery-1.8.1.min. js"></script>
Und die .js Datei habe ich folgend eingefügt:
|
JQuery Problem
04/19/2012 - Web Development - 4 Replies
Moin,
also es geht primär um dieses Beispiel:
$("#arrow-top").wrap('<a href="#" onclick="getMap(\'Top\');"></a> ');
Wenns ichs am PC teste (mit XAMPP) funktioniert es einwandfrei. Wenn ich es aber aufn Server lade, gehts nicht mehr, also er wrap'ed das Bild nicht mehr.
Alles andere funktioniert sonst einwandfrei, nur eben das nicht.
|
jquery Problem
04/17/2012 - Web Development - 2 Replies
Hey Leute!
Ich bin gerade dabei mir eine kleine Slideshow mittels Jquery zu basteln und nach tausenden versuchen scheint es einfach nicht zu funktionieren.
Hoffe ihr könnt mir helfen :)
$(document).ready(function() {
$("#slide1").hover(
function () {
|
JQuery -JSON
11/28/2011 - General Coding - 0 Replies
Hey, mein Freund hat ein Problem und ich wollte mal wissen, ob ihr da helfen könnt?
Die Fragestellung ist sehr kurz und ich persönlich kann damit nichts anfangen , aber hier die Frage:
Wie krieg ich beim Fullcalendar in JQuery nen Datensatz per JSON rein?
|
All times are GMT +1. The time now is 02:02.
|
|