1

多くの関数やコールバックなどを備えた非常に大きなJSスクリプトがあります...私の最初のアクションの1つは、Ajax呼び出しから値を取得することです。次に、この値をスクリプトの開始時に定義されたグローバル変数に設定して、値を何度も参照できるようにします。たとえば、値を使用してユーザー言語を決定します。

// define my global var at the top of my script..
var globalOpCo = "";

// I then try to give this a value in the next function I call...
$.ajax({
        url:"getURL",
        type:"POST",
        dataType:"json",
        success:function(data){
            if(data === null){
            // do something...  
            }else{
            // set the current language...
                globalOpCo = data.Opco.toLowerCase();
                console.log(globalOpCo); // this is the value I want it to be from data.Opco.toLowerCase() 
                // now do something.... 
            }
        },
        error:function(xhr, ajaxOptions, thrownError){
            console.log(xhr.status);
            console.log(xhr.statusText);
            console.log(thrownError);
        }
    });

globalOpCoスクリプトの後半で、を次のような別の関数に渡したいと思います...

 $("#aButton").on("click", function(){
        anotherFunction(globalOpCo); // I want to pass the globalOpCo as an arguement but its value isn't get updated above?
    });

ただし、の値はglobalOpCo空の文字列です。#aButtonは、上記のajax呼び出しが実行される前または実行されるまでクリックできません。誰かが助けることができますか?

4

3 に答える 3

2

デフォルトでボタンを無効にし、globalOpCo を定義した後に onclick を success 関数に追加し、onclick を設定するときに有効にします。おまけ: これを必要とするコードがそのすぐ隣にあるため、グローバルである必要がなくなりました。どちらが良い=)

于 2013-02-06T14:02:15.383 に答える
0

さて、私はこれを解決したかもしれません!それはスコープであり、変数は内部で定義され$("document").ready(function(){})ていますが、それを呼び出している関数は外部にあります$("document").ready(function(){})

于 2013-02-06T14:05:33.823 に答える
0

グローバル変数はwindow、ブラウザーにあるグローバル オブジェクトの単なるプロパティです。を明示的に使用することで、スコープの問題を回避できますwindow.globalOpCo

于 2013-02-06T14:07:33.603 に答える