簡體   English   中英

AJAX 調用后返回 undefin 的對象中的鍵

[英]key in object returning undefind after AJAX call

我做一個XML文件中的一個Ajax請求,並映射XML轉換為JavaScript對象我的問題是,上午登錄物體,看到的價值觀,我不會,但是當我嘗試返回我不斷收到值undefined ,即便將所有的代碼在 AJAX 請求的成功回調中,我的代碼如下:

// Errors Object
var ErrorsObject = {};
var ErrorApplet = $('.AppletStyle1 table td');

// Ajax Request
$.ajax({
  type: "GET",
  url: "ECA_ADMIN_IO.xml",
  dataType: "xml",
  cache: false,
  success: function (xml) {
    $(xml).find('EcaAdminBc').each(function () { 
      var code = $(this).find('code').text();
      var msg = $(this).find('msg').text();
      ErrorsObject[code] = msg;
    });

    // Reformat Errors
    if(ErrorApplet.length > 0) {
      $(ErrorApplet).each(function(){
        var Error = $(this).text();
        if(Error.indexOf("SBL") >= 0){
          var ErrorCode = Error.split('(')[1].replace(")","");
          var ErrorText = ErrorsObject[ErrorCode];

          // The Log is showing the values correctly but i cant access the object values 
          console.log(ErrorsObject);

          // ErrorText And ErrorCode Are always undefined !!
          if(typeof ErrorText != 'undefined'){
            $(this).text(ErrorText);
          }
        }
      });
    } 
  }
});

我需要額外的上下文,但我想問題是什么。 你正在嘗試做這樣的事情:

var myFunction = function(){
  // Error Object
  var ErrorsObject = {};
  var ErrorApplet = $('.AppletStyle1 table td');

  $.ajax(
    type: "GET",
    url: "ECA_ADMIN_IO.xml",
    dataType: "xml",
    cache: false,
    success: function (xml) {
      //using response to fill ErrorsObject
      ErrorsObject['Ok'] = 'This key has Value!';
      //more awesome code here
      //... lets check again:
      console.log(ErrorsObject['OK']); //Outputs 'This key has Value!'
    }
  );

   return ErrorsObject;
};

var myAwesomeErrorObject = myFunction();
console.log(myAwesomeErrorObject['OK']); //undefined!
console.log(myAwesomeErrorObject); //Empty object!

問題是myFunction成功回調函數執行之前完成(回調是異步的)。 這就是為什么記錄myAwesomeErrorObject['OK']顯示undefined 我猜您也嘗試在成功回調中return ErrorsObject ,但這也不起作用。

為了修復您的代碼,您必須:

  • 在成功回調中使用 ErrorsObject(即不返回它)。
  • 從成功回調內部調用第二個函數,將 ErrorsObject 傳遞給它。
  • 將回調函數傳遞給myfunction並從成功回調內部執行它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM