-2

JavaScript での変数の宣言に小さな問題があります。ファイルの先頭で を介して変数を宣言しますvar send;。その後、変数 Ajax リクエストに割り当てる$(document).ready(function()再帰ループがあり、ファイルの最後に. だからそれは好きです:setTimeOutabort()

var send;
$(document).ready(function(){
//somecode
    function loop(){
        send = $.getScript('index.php', function(data){
            //somecode
        }
    }
//somecode
}
function one_more(){
    send.abort();
}

問題は、send.abort();私が受け取ることです:

TypeError: 送信が未定義です

send.abort();

どこが間違っていますか?

4

4 に答える 4

1

私の知る限り、このコードは間違っていますか?

function loop(){
    send = $.getScript('index.php', function(data){
        //somecode
    }
}

これである必要があります:

function loop(){
    send = $.getScript('index.php', function(data){
        //somecode
    });
}

を参照してください); 送信の最後に=...。

于 2012-10-02T06:40:11.743 に答える
1

send関数でのみ定義されるため、呼び出されたときにのみ定義されloop()ます (ドキュメント準備完了ハンドラーのスコープ内でのみ呼び出されます)。

が定義されるone_more()前に呼び出していると思います。send

説明のために、上記のものは基本的に

var send;
send.abort();

簡単な回避策sendは、適切な名前のメソッドで定義することです。

var send = send || {abort: function(){}};

これによりエラーは停止しますが、物事が実行および定義されたときに実際に解決する必要があります

于 2012-10-02T06:37:23.273 に答える
0

変数の割り当てはsend、ready 関数内で行われます。send.abort()命令に到達したとき、ready関数はまだ実行されていません。

于 2012-10-02T06:41:21.057 に答える
-1

定義window.varnameすると、変数はグローバルになります。windowを呼び出すことができwindow.window.window.window.window.window.window.window、それが返されるため、すべての変数のルートのようなものだと思いますwindow

于 2012-10-02T06:44:48.583 に答える