私はjQueryとcountdown(jQueryプラグイン)を使用しています。私はカウントダウンがx秒間実行されるようにしたい。ここでxはserverTime.phpの整数である。非同期AJAX呼び出しからresponseTextを別の関数に渡すにはどうすればよいですか?
問題 - getTime()関数のresponseTextをTimer関数で使用できるように返す方法がわかりません。
は、最初に私は(jQueryのなし)純粋なJSを使用してみました、と私は似てトピックを見つけました:
- 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整数される、コンテンツを返すべきです。 アラート(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