2011-11-07 9 views
0

私のajaxレスポンスで変数 'dimensions'にアクセスしようとしていますが、取得できません。私はこの変数をグローバルにしたくない。これは動作するはずjavascript、jqueryのスコープ変数

var dimensions="sample"; 
+0

あなたはそれにアクセスできないということを意味しますか?エラー、間違った値などを生成しますか? – JaredPar

+8

ディメンションには正常にアクセスできるはずです。しかし、それは決して初期化していないので、「未定義」になります。 – samjudson

+0

@samjudsonはいそれは定義されていません –

答えて

7

この場合、あなたはdimensionsにアクセスすることができますajaxコールバックとajaxリクエストを開始した直後のコードからの変数です。変数は、これらのコンテキストの両方でアクセス可能です。

タイミングは問題の原因となる可能性が最も高いです。 successメソッドは、ajax要求が完了した後で非同期に実行されます。これは後で実行するように見るのが最善です。ただし、$.ajaxコール直後のコードはすぐに実行されます。したがって、実行時にdimensions変数にあるsuccessハンドラからの影響は表示されません。

successメソッドで計算されたdimensionsの値で実行するコードがある場合は、そのコードをsuccessコールバックから呼び出す必要があります。たとえば、

$('#submittext').click(function(){ 

    var handleNewDimensions = function (dimensions) { 
    // Code that used to be after the $.ajax line 
    } 

    $.ajax({ 
    type: "GET", 
    url: "bin/getcontentsize.php", 
    data: findContentsize, 
    success: function(response){ 
     var dimensions = doTheCalculation(...); 

     // Call the code which needs to deal with the new dimensions 
     handleNewDimensions(dimensions); 
    } 
    }); 
+0

それは私の問題のおかげでの解決です感謝します。ありがとう –

1

寸法に変数の値を割り当て、それを再度テストしている

$(document).ready(function(){ 
    $('#submittext').click(function(){ 
    var dimensions = 1; 
    $.ajax({ 
    type: "GET", 
    url: "bin/getcontentsize.php", 
    data: findContentsize, 
    success: function(response){ 
     alert(dimensions); 
    } 
    }); 
    //so i can use here 
    }); 
    }); 
1

を::次は私のコード

$(document).ready(function(){ 
    $('#submittext').click(function(){ 
    var dimensions; 
    $.ajax({ 
    type: "GET", 
    url: "bin/getcontentsize.php", 
    data: findContentsize, 
    success: function(response){ 
     //want to access dimensions here to assign response and some calculation(but not able to access it) 
    } 
    }); 
    //so i can use here 
    }); 
    }); 
2

実行すると問題が発生します。

$(document).ready(function(){ 
    $('#submittext').click(function(){ 
     var dimensions="1"; 
     $.ajax({ 
      type: "GET", 
      url: "bin/getcontentsize.php", 
      data: findContentsize, 
      success: function(response){ 
       dimensions = "2"; 
      } 
     }); 
     //!!!!Attention 
     alert(dimensions); // result is "1", not "2" 
    }); 
}); 

まず、コードが既に実行されています。その後、あなたの$ .ajaxが実行を開始します。

関連する問題