1

グローバル変数を使用して関数の外でデータを取得できない可能性があるので試してみてください。window.nuTime を含め、考えられることはすべて試しましたが、成功しませんでした。

$.ajax({
    cache: false,
    type: 'POST',              
    url: 'servertime.asp',
    data: {},
    success:    function (data) {
                $('#servertime').html(data);
                window.nuTime = data;
                //alert(data);
                },
    error:      function (jxhr, msg, err) {
                $('#response').append('<li style="color:red">' + msg + '</li>');
                }
    });

alert(nuTime);
4

2 に答える 2

3

コリンクは正しいです!あなたはそのようにしてこれを改善することができます:

$.ajax({
    cache: false,
    type: 'POST',              
    url: 'servertime.asp',
    data: {},
    success:    function (data) {
                    $('#servertime').html(data);
                    alertNuTime(data);
                },
    error:      function (jxhr, msg, err) {
                    $('#response').append('<li style="color:red">' + msg + '</li>');
                }
    });

function alertNuTime(data) {
    alert(data);
}
于 2013-01-02T04:09:22.657 に答える
2

が呼び出されたときalert(nuTime)、AJAX はまだ返されていません。結果に依存するものはすべて、成功ハンドラー内にある (またはそのハンドラーによって呼び出された) 必要があります。

編集:次のような「遅延」を実装できます。

function someFunctionThatDependsOnAjaxBeingDone(arg1,arg2,arg3) {
    if( typeof nuTime === "undefined") {
        var t = this, ac = arguments.callee, arg = arguments;
        setTimeout(function() {ac.apply(t,arg);},100);
    }
    else {
        // normal function stuff here
    }
}

ただし、手動でarguments配列に変換しない限り、これは一部のブラウザでは機能しません。また、戻り値でも正しく機能しません。

于 2013-01-02T04:02:44.237 に答える