Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Web Development
You last visited: Today at 23:28

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



jQuery request.done keine überspeicherung

Discussion on jQuery request.done keine überspeicherung within the Web Development forum part of the Coders Den category.

Reply
 
Old   #1

 
Ravenstorm's Avatar
 
elite*gold: 0
The Black Market: 100/0/0
Join Date: Jan 2010
Posts: 13,150
Received Thanks: 3,206
jQuery request.done keine überspeicherung

Hallo Leute,

da ich mich nach langem wieder an mein CMS gesetzt habe und nun per jQuery einen request durchlaufen lasse, diesen aber nicht richtig bearbeiten kann brauch ich eure Hilfe.

Folgendermaßen ich habe nun erstmal 2 Dateien Collection.php & Save_Col.php

Collection.php:
PHP Code:
var request = $.post('controller/Save_Col.php', { datadataToSend } );
var 
test "TestString";

request.done(function(jsonArray){

   var 
requestData JSON.parse(jsonArray);
   
test requestData.msg;

   
console.log("TestVariable_Done: " test); //MsgString

});

console.log("TestVariable: " test); //TestString sollte jedoch MsgString sein 
So nun die Frage, ich überspeichere doch die test var im .done block warum erhalte ich nach dem Block jedoch wieder die unveränderte variable?
Ravenstorm is offline  
Old 05/17/2013, 17:52   #2
 
elite*gold: 0
Join Date: Apr 2013
Posts: 45
Received Thanks: 12
Hey,
du befindest dich in einer Funktion
Code:
function(jsonArray)
Wie war das nochmal mit dem Scope von Variablen? Wenn ichs richtig im Kopf hab ists wie in PHP: in Funktionen definierte Variablen gelten ausserhalb dieser nicht, genauso sind alle ausserhalb definierten Variabeln (sofern es keine Globals sind) nicht vorhanden. Ich glaub, damit hab ich dein Problem gelöst oder?
lg
Cooltek is offline  
Old 05/17/2013, 17:57   #3
 
mydoom's Avatar
 
elite*gold: 0
Join Date: Dec 2007
Posts: 322
Received Thanks: 98
Das klingt nach einem typischen Denkfehler beim Umgang mit asynchronen Funktionen:

request.done() wird erst aufgerufen, nachdem

Code:
console.log("TestVariable: " + test);
ausgegeben wurde. Somit ergibt sich die Situation:

"TestVariable: TestString"
"TestVariable_Done: ..."


@Cooltek:
Das ist nicht ganz richtig: In Javascript gelten selbst mit "var" im globalen Kontext definierte Variable als globale Variable und sind sehr wohl .
mydoom is offline  
Thanks
1 User
Old 05/17/2013, 18:04   #4

 
Ravenstorm's Avatar
 
elite*gold: 0
The Black Market: 100/0/0
Join Date: Jan 2010
Posts: 13,150
Received Thanks: 3,206
Quote:
Originally Posted by mydoom View Post
Das klingt nach einem typischen Denkfehler beim Umgang mit asynchronen Funktionen:

request.done() wird erst aufgerufen, nachdem

Code:
console.log("TestVariable: " + test);
ausgegeben wurde. Somit ergibt sich die Situation:

"TestVariable: TestString"
"TestVariable_Done: ..."


@Cooltek:
Das ist nicht ganz richtig: In Javascript gelten selbst mit "var" definierte Variable im globalen Kontext als globale Variable und sind sehr wohl in der Funktion verfügbar.
Da scheint der Fehler zu liegen.

Dort wo
PHP Code:
console.log("TestVariable: " test); 
steht, steht aber normalerweiße ein
PHP Code:
return value
da es die Value des jEditable in eine Zelle der Tabelle schreibt.
Allerdings will ich die Value vorher durch das .done abfragen und dann erst eintragen, nur weiß ich nun nicht, wie ich da vorgehen sollte.
Ravenstorm is offline  
Old 05/17/2013, 18:17   #5
 
mydoom's Avatar
 
elite*gold: 0
Join Date: Dec 2007
Posts: 322
Received Thanks: 98
Quote:
Originally Posted by Ravenstorm View Post
Dort wo
PHP Code:
console.log("TestVariable: " test); 
steht, steht aber normalerweiße ein
PHP Code:
return value
Das ergibt für mich keinen Sinn, da dort quasi immer "TestString" zurückgegeben werden sollte.

// Oder null undefined wenn value gar nicht definiert wurde.
mydoom is offline  
Thanks
1 User
Old 05/17/2013, 18:32   #6

 
Ravenstorm's Avatar
 
elite*gold: 0
The Black Market: 100/0/0
Join Date: Jan 2010
Posts: 13,150
Received Thanks: 3,206
Quote:
Originally Posted by mydoom View Post
Das ergibt für mich keinen Sinn, da dort quasi immer "TestString" zurückgegeben werden sollte.

// Oder null undefined wenn value gar nicht definiert wurde.
Du kannst es auch als
PHP Code:
return test
sehen. Somit macht es für dich vielleicht mehr Sinn.
Ravenstorm is offline  
Old 05/17/2013, 18:54   #7
 
mydoom's Avatar
 
elite*gold: 0
Join Date: Dec 2007
Posts: 322
Received Thanks: 98
Nicht wirklich, da $.post nur ein Alias für

Code:
$.ajax({
  type: "POST",
  url: url,
  data: data,
  success: success,
  dataType: dataType
});
also einer AJAX-Funktion von jQuery ist. Und die haben die nette Eigenschaft asynchron zu sein:
Quote:
Originally Posted by http://api.jquery.com/jQuery.ajax/
The first letter in Ajax stands for "asynchronous," meaning that the operation occurs in parallel and the order of completion is not guaranteed. The async option to $.ajax() defaults to true, indicating that code execution can continue after the request is made.
Du kannst also gar nicht davon ausgehen, dass der Request abgeschlossen und Daten zurückgekommen sind, nur weil die Anweisung im Code nach der Callback-Funktion steht.
mydoom is offline  
Old 05/17/2013, 19:08   #8
 
elite*gold: 0
Join Date: Apr 2005
Posts: 323
Received Thanks: 114
Setz das async flag auf false.

MrPuschel is offline  
Old 05/17/2013, 19:21   #9
 
mydoom's Avatar
 
elite*gold: 0
Join Date: Dec 2007
Posts: 322
Received Thanks: 98
Quote:
Originally Posted by MrPuschel View Post
Setz das async flag auf false.

Quote:
Originally Posted by http://api.jquery.com/jQuery.ajax/
Setting this option to false (and thus making the call no longer asynchronous) is strongly discouraged, as it can cause the browser to become unresponsive.


//Edit:
Quote:
Originally Posted by http://api.jquery.com/jQuery.ajax/
Note that synchronous requests may temporarily lock the browser, disabling any actions while the request is active.
mydoom is offline  
Old 05/17/2013, 19:41   #10
 
elite*gold: 0
Join Date: Apr 2005
Posts: 323
Received Thanks: 114
Quote:
Originally Posted by mydoom View Post
PHP Code:
$.ajax({
  
type"POST",
  
urlurl,
  
datadata,
  
successsuccess,
  
dataTypedataType,
  
asyncfalse
}); 
Mit dem setting async auf false wird der request nicht asynchron ausgeführt.
MrPuschel is offline  
Old 05/17/2013, 19:53   #11
 
mydoom's Avatar
 
elite*gold: 0
Join Date: Dec 2007
Posts: 322
Received Thanks: 98
Das ist mir schon klar. Ich habe die Dokumentation gelesen und oben zitiert weshalb das keine gute Idee ist.
mydoom is offline  
Old 05/17/2013, 20:28   #12
 
elite*gold: 0
Join Date: Apr 2005
Posts: 323
Received Thanks: 114
Quote:
Originally Posted by mydoom View Post
Das ist mir schon klar. Ich habe die Dokumentation gelesen und oben zitiert weshalb das keine gute Idee ist.
Und das passiert warum?
MrPuschel is offline  
Old 05/17/2013, 20:54   #13
 
mydoom's Avatar
 
elite*gold: 0
Join Date: Dec 2007
Posts: 322
Received Thanks: 98
Weil Javascript im UI-Thread läuft.
mydoom is offline  
Old 05/17/2013, 21:45   #14
 
elite*gold: 0
Join Date: Apr 2005
Posts: 323
Received Thanks: 114
Quote:
Originally Posted by mydoom View Post
Weil Javascript im UI-Thread läuft.
Da mach dir mal keine Sorgen. Die JavaScript Engine läuft in ihrem eigenen thread und legt den UI thread sicher nicht schlafen. In der jquery Implementation bedeutet das async flag nur das die Rückgabe nicht als callback läuft sondern prozedural abläuft.

Es wird also auf eine Rückgabe gewartet. Das schlimmste was dir passieren kann ist, das du auf einen timeout warten musst wenn das Ziel nicht erreichbar ist. Es ist kein gutes Design synchrone requests abzusetzen, manchmal jedoch Notwendig und ganz sicher schießt es deinen Browser nicht ohne Grund ab.
MrPuschel is offline  
Thanks
1 User
Old 05/17/2013, 21:54   #15
 
mydoom's Avatar
 
elite*gold: 0
Join Date: Dec 2007
Posts: 322
Received Thanks: 98
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?
mydoom is offline  
Reply


Similar Threads 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 23:30.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.