2011-02-04 21 views
1

私はAjaxの機能を持っている:jQuery/JavaScriptでグローバル変数を設定する方法は?

$.ajax({ 
     url: 'http://localhost/process.php', 
     type: 'post', 
     data: '', 
     success: function(output) { 

var animal = output 

     } 
    }); 

私は、私もAjaxの機能の成功コールバックの外にページ上の任意の場所にそれを呼び出すことができるようにvar animalをグローバルに設定されるようにしたいと思います。これを行う方法?

+3

あなたの '$ .ajax'呼び出しは非同期であることに注意してください。私は「なぜ動物は未定義ですか?」と感じることができます。 ; o) – user113716

+0

'console.log(typeof animal); '//初期化されていないためundefinedを返す可能性があります。 – Roylee

答えて

5

は、あなたがそれをグローバル変数になりたい場合は、グローバル変数として宣言

var animal = null; 

$(function(){ 
    $.ajax({ 
     url: 'http://localhost/process.php', 
     type: 'post', 
     data: '', 
     success: function(output) { 
      animal = output 
     } 
    }); 
}); 
2

を構築する任意の関数やjQueryの外にそれを宣言します。一般的には、.jsファイルの先頭に、

var animal; 

を置きます。スコープ内の別の場所に名前を再使用しない限り、コード内のanimalへの参照はグローバル変数になります。

-1

varを削除して変数globalにします。

しかし、グローバルでの作業は、デバッグが非常に難しいため、一般的に悪い習慣とみなされます。

+2

IE doenstは常にこれらの変数を定義して、IEで何らかのエラーを得ることができます –

0

動的に実行したい場合は、

jQuery.globalEval()このメソッドは、通常のJavaScriptのeval()をその中にそれが(動的に外部スクリプトをロードするために重要である)グローバルコンテキスト内で実行されます使用して異なる動作を

http://api.jquery.com/jQuery.globalEval/

$.globalEval('var animal = ' + output); 
+0

私の答えに何か問題はありますか?なぜあなたはそれを投票しますか? – silver

関連する問題