2012-02-17 78 views
0

我有以下代碼並希望將其用作對象。Javascript新手使用ajax創建對象

如何訪問對象的屬性?目前我總是不確定!

function getLoggerInfo() 
{ 

    $.ajax({ 
    url: "data.json", 
    type: "GET", 
    data: {emGetInfo: "logger"}, 
    dataType: "json", 
    success: function(response){ 
     //alert("1: " + this.loggerName); 
     loggerName = response.emGetInfo[0].loggerName; 
     protocol = response.emGetInfo[0].protocolVersion; 
     $("#console").text("Logger Name: " + loggerName + " - Protocol Version: " + protocol); 
     return; 
     }, 
    error: function(jqXHR, textStatus, errorThrown){ 
     $("#console").text("ERROR: AJAX errors. " + jqXHR + " : " + textStatus + " : " + errorThrown); 
     return; 
     }, 
    statusCode: { 
     404: function() { 
      $("#console").text("404: The requested JSON file was not found."); 
     return; 
     } 
    } 
}); 
} 

//獲取loggerName ...

$(document).ready(function() { 

    // Get logger info event... 
    $("#ajax").click(function() { 
    var loggerInfo = new getLoggerInfo(); 
    alert("Loggername: "+ loggerInfo.loggerName); 
}); 

});

回答

0

AJAX是異步的 - 因此它不返回數據...以下是當您使用$.ajax()功能

  1. 將數據發送到URL會發生什麼(粗糙)的輪廓
  2. 瀏覽器繼續執行 - 根據需要執行其他代碼
  3. 當url(在步驟1中調用)完成處理後,將執行success回調。

第三步可能是1秒,10秒,5分鐘後

你應該處理的成功回調的要求:

$.ajax({ 
    url: "data.json", 
    type: "GET", 
    data: {emGetInfo: "logger"}, 
    dataType: "json", 
    success: function(response){ 
     // process here 
     loggerName = response.emGetInfo[0].loggerName; 
     alert(loggerName); 
    } 
}); 
+0

感謝您的非常快的答覆,我第一次onthis網站和它的偉大...代碼會提醒正確的響應,但我如何將值返回給調用該腳本的變量? – 2012-02-17 10:57:32

+0

你不能...這就是我的觀點你可以做的是在成功回調中執行代碼 - 你不能返回值 – ManseUK 2012-02-17 11:03:11

+0

Doh!認爲這很奇怪,沒有什麼工作!回到正常的功能,然後爲此設置一些全局變量。感謝您的幫助,優質的服務。 – 2012-02-17 11:35:22