2016-06-27 4 views
1

これは、SharePoint 2013からリストアイテムをプルするために使用されるスクリプトの一部です。私は2つの異なるリストをテストしようとしています。 pLead変数を第1の関数で第2の関数で使用するように設定する方法を理解できないようです。文字列が空であると考えるので、2番目の関数では常にifステートメントを実行します。なぜそれはこのようなものですか?JS - 無名関数の中にグローバル変数を設定しますか?

var pLead = ""; 

$(function() { 

    $.ajax({ 
      url: "__URL__", 
      headers: {"Accept": "application/json;odata=verbose"}, 
      type: "GET", 
      cache: false,  

    }).success(function (data) { 
     $.each(data.d.results, function(key, value) { 
     pLead = "TESSTT"; 
     }); 
    }); 
}); 

$(function() { 

    $.ajax({ 
      //DTIM Projects page 
      url: "__URL__", 
      headers: {"Accept": "application/json;odata=verbose"}, 
      type: "GET", 
      cache: false,  

    }).success(function (data) { 
     $.each(data.d.results, function(key, value) { 
      if (pLead.length === 0) { $("#ProjectLead").html(value.PL); } 
      else { $("#ProjectLead").html(pLead); } 
     }); 
    }); 
}); 
+2

AJAXは非同期です。約束を使う必要があります。 – Hoyen

+1

またはコールバック、または使用したいトリックです。 –

答えて

1

デバッグに使っても機能を指定することをお勧めします。最初の関数が完了したときに2番目の関数が呼び出されることになっている場合、pLead変数は必要ありません。2番目の関数に名前を付け、最初の関数のsuccessまたはdoneハンドラから呼び出します。

function firstFunction() { 
    $.ajax({ ... }).done(secondFunction); 
} 
+0

...と* name *これらの関数をソースコードに入れておけば、2つが一緒に属していることが即座に分かります*。自由にあなたがやっていることとその理由を指摘するコメントを追加してください。 –

関連する問題