2016-06-27 27 views
1

這是用於從SharePoint 2013中提取列表項的腳本的一部分。我試圖測試兩個不同的列表,這就是爲什麼我有兩個不同的匿名函數。我似乎無法弄清楚如何在第二個函數中使用的第一個函數中設置變量。它總是在第二個函數中執行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

它是一個好主意,命名您的功能,即使你只是用它來調試。如果第二個函數在第一個函數完成時被調用,則不需要pLead變量,只需命名第二個函數並從第一個函數的success或done處理函數中調用它即可。

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

...和* name *這些函數,並將它們放在源代碼中,以便它們*顯而易見*這兩個屬於一起。自由地添加評論,指出你在做什麼,爲什麼。 –

相關問題