我正在使用jQuery和countdown(jQuery插件)。我希望倒計時運行x秒,其中x是serverTime.php中的整數。如何將responseText從異步AJAX調用傳遞給另一個函數?
問題 - 我無法弄清楚如何在函數getTime()中返回responseText,以便它可以在Timer函數中使用。
起初,我嘗試使用純JS(無jQuery的),我也發現了類似的主題:
- 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
- 和其他...
我遇到過的一些想法/可能的解決方案:
- 使用同步調用和全局變量來存儲響應。我 試過這個,並不認爲它是一個選項,因爲它凍結了 用戶屏幕(在大多數情況下也被認爲是不好的做法)
- helper function。 -
定時器功能:
$(function(){
var time = getTime(); // time is an integer
$('#defaultCountdown').countdown({until: time, format: 'S', onExpiry: action});
});
的getTime()檢查serverTime.php和應返回的內容,這將是一個整數。 Alert(html)有效,而return html不起作用。我知道這是因爲這個調用是異步的。
function getTime()
{
$.ajax({
url: "serverTime.php",
cache: false,
async: true,
success: function(html)
{
alert(html);
helperFunction(html);
return html;
}
});
}
helperFunction。不幸的是,我不知道如何將結果傳遞給定時器功能。
function helperFunction(response)
{
return response;
}
serverTime.php
echo 30; // 30 seconds, just an example
我試着解釋我的問題,並表明我已經把一些時間到了。如果您需要更多信息,請詢問。也許我只是在錯誤的方向思考。
時間變量用於定時器功能(重命名變量以使其更容易閱讀,並忘記重命名導致混淆的變量)。基本上,我只是想從serverTime.php的值到定時器功能。沒有你的建議工作。在提出這個問題之前,我嘗試了類似的方法,現在再試一次。而且我總是被卡住,因爲該調用是異步的,並且不能返回響應。 – afaf12
@awerti:是的,回覆將永遠無法返回。創建一個可以調用的命名函數,它將*接收*來自AJAX的響應,然後它可以使用'.countdown()'。另外,問題的一部分可能是'$(function(){...})'內的任何內容都可用於其他任何內容。我會在一分鐘後更新。 – user113716
...在上面的評論中,我的意思是說*「將不可用於任何其他任何內容」*而不是*「可用」*。 – user113716