2010-12-05 5 views
0

Hey Leute, ich baue eine Anwendung, die Zugriff auf die Serverzeit vor dem Senden von AJAX-Anfragen benötigt, die einzige Möglichkeit, dies zu tun ist in der Lage zu haben, eine Funktion, die fordert die Zeit vom Server AJAX verwenden, so in meiner Funktion habe ich den folgenden Code:Konnte keine Rückkehr von jQuery AJAX Erfolgsfunktion erhalten

$.ajax({ 
    type:"GET", 
    url:"app/time.php", 
     success: function(html){ return html; } }); 

in sich der Code in Ordnung ist, aber wie es ist, ich bin nicht in der Lage den Zugriff auf die zurückgegebene HTML zu gewinnen, was bedeutet, die Daten sind nutzlos für mich. Ich habe versucht, die Daten an eine andere Funktion und sogar wieder an die gleiche Funktion zu senden, und es fügt einfach Komplexität hinzu, von der ich glaube, dass sie nicht benötigt wird. Ich habe auch versucht, den Wert des HTML auf eine andere Variable einzustellen und dann zu verwenden, aber das funktioniert nicht außerhalb der Funktion.

Also frage ich, ob es eine einfache Möglichkeit gibt, Zugriff auf die zurückgegebene "html" Variable von der AJAX Anfrage, so dass ich Variablen auf der Seite gleich der Funktion setzen kann?

Antwort

1

es wie folgt tun:

function getTime() { 

     $.ajax({ 
     type:"GET", 
     url:"app/time.php", 
      success: function(html){ setTime(html); } }); 
    } 

    function setTime(time){ 
    //do what ever you want with time 
    } 

, wann immer Sie Zeit getTime() ein Ajax gemacht werden genannt anrufen und die Funktion setTime() aufgerufen wird, und wird erhalten Zeit durch sein Argument.

oder Sie können es wie diese

Funktion getTime tun() {

$.ajax({ 
    type:"GET", 
    url:"app/time.php", 
     success: function(time){ // do what ever with time ; } }); 
} 

denke ich, auf diese Weise ist es einfacher, aber wenn Sie eine lange Funktion haben dann die vorherige ist sauberer denke ich.

+0

Behalte dies in minde, dass Du mit der Variable 'time' NICHT' html' innerhalb der Funktion arbeiten musst !!! –

+0

Danke für die schnelle Antwort, aber ich brauche die Serverzeit jedes Mal aktualisiert werden, wenn die Funktion aufgerufen wird. –

+0

@Tom Walters, Ihre Begrüßung, ich habe die Antwort bearbeiten, check it out! –

0

Sie können keinen Wert von dort zurückgeben. Es ist eine asynchrone Funktion, die ausgelöst wird, wenn die XHR-Anforderung erfolgreich abgeschlossen wurde. Sie müssen einen anderen Rückruf aufrufen hier:

function getTime(cb) { 
     .ajax({ 
     type:"GET", 
     url:"app/time.php", 
     success: function(html){ cb(html); } 
     }); 
} 

getTime(function(html) { 
    // do something with html 
}); 
+0

Ich bin wundernd, warum Sie die Funktion 'cb()' mit Daten aufrufen, während Sie die Funktion 'getTime();' da unten, ich meine wo bekommst du html in 'getTime()'? während du 'cb(); –

+0

Danke Andy, aber wenn ich die Funktion verwende, möchte ich in der Lage sein, die Serverzeit auf eine Variable zu setzen, und in diesem Fall konnte ich es nicht zum Laufen bringen. –

Verwandte Themen