Ich benutze jQuery und countdown (jQuery-Plugin). Ich möchte, dass der Countdown für x Sekunden läuft, wobei x eine Ganzzahl aus serverTime.php ist.
Problem - Ich kann nicht herausfinden, wie ich den responseText in der Funktion getTime() zurückgeben kann, damit er in der Timer-Funktion verwendet werden kann.
Zuerst habe ich versucht, reines JS (ohne jQuery) zu verwenden, und ich habe ähnliche Themen gefunden:
- why-can-i-not-return-responsetext-from-an-ajax-function
- in-ajax-how-to-retrive-variable-from-inside-of-onreadystatechange-function
- how-to-return-variable-from-the-function-called-by-onreadystatechange-function
- und andere...
Einige Ideen/mögliche Lösungen, auf die ich gestoßen bin:
- Verwendung von synchronen Aufrufen und einer globalen Variablen zur Speicherung der Antwort. Ich habe dies versucht und halte es nicht für eine Option, da es den Benutzerbildschirm einfriert (und in den meisten Fällen auch als schlechte Praxis gilt)
- Hilfsfunktion. -
Timer-Funktion:
$(function (){
var time = getTime(); // time ist eine Ganzzahl
$('#defaultCountdown').countdown({until: time, format: 'S', onExpiry: action});
});
getTime() überprüft serverTime.php und sollte den Inhalt zurückgeben, der eine Ganzzahl ist. Alert(html) funktioniert, während return html nicht funktioniert. Ich weiß, dass dies daran liegt, dass der Aufruf asynchron ist.
function getTime()
{
$.ajax({
url: "serverTime.php",
cache: false,
async: true,
success: function(html)
{
alert(html);
helperFunction(html);
return html;
}
});
}
helperFunction. Leider weiß ich nicht, wie ich das Ergebnis an die Timer-Funktion übergeben kann.
function helperFunction(response)
{
return response;
}
serverTime.php
echo 30; // 30 Sekunden, nur ein Beispiel
Ich habe versucht, mein Problem zu erklären und zu zeigen, dass ich mir Zeit dafür genommen habe. Wenn Sie zusätzliche Informationen benötigen, fragen Sie einfach. Vielleicht denke ich einfach in die falsche Richtung.