2017-02-18 59 views
0

我使用ajax從服務獲取圖像名稱數組。 當我檢查data.d數組在那裏。但是,我似乎無法將其分配給我的變量,因爲當我提醒它時,它說未定義。從端點獲取圖像

什麼是data.d只要訪問返回數組?爲什麼.d

有沒有更好的方法來做到這一點?我將在程序中稍後介紹一些圖像名稱並循環播放。

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <script type="text/javascript" src="https://code.jquery.com/jquery-3.1.0.js"></script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <div> 
      <asp:GridView ID="GridView1" runat="server"></asp:GridView> 

     </div> 
    </form> 
    <script> 
     $(function() { 
      var aryImageNames; 

      $.ajax({ 
       type: "POST", 
       url: "Default.aspx/GetImages", 
       contentType: "application/json; charset=utf-8", 
       data: "{}", 
       success: function (data) { 
        aryImageNames = data.d; 
       } 
      }); 

      alert(aryImageNames); 
     }); 
    </script> 
</body> 
</html> 

回答

0

我懷疑.d僅僅是你的終點是如何構造的結果。這不是一個jQuery/JavaScript標準。

至於爲什麼你可能會看到undefined當提醒aryImageNames,我懷疑這可能是由於JavaScript的異步性質。換句話說,在調用alert(aryImageNames)之前,您的AJAX調用可能沒有完成。

您必須確保處理圖像的代碼在完成後被調用。例如,如果你想提醒形象的名字,你需要把它的成功回調,像這樣:

 $.ajax({ 
      type: "POST", 
      url: "Default.aspx/GetImages", 
      contentType: "application/json; charset=utf-8", 
      data: "{}", 
      success: function (data) { 
       alert(data.d); 
      } 
     }); 

這確保了一旦結果已經從您的端點檢索纔會發生警報。

+0

但我需要在成功或ajax範圍之外使用數組。我會怎麼做? – Rod

+0

您仍然可以將該數組設置爲全局變量。然後,您可以阻止依賴陣列的區域的使用,直到它被加載(使用成功回調來「激活」/一旦數據加載後顯示該區域)。想象一下像加載屏幕的東西? – Joseph