2013-10-17 54 views
-4

這個問題已經回答投票。我的編輯有關使其更清晰,並分享一些其他開發人員獲得的新知識,我不期待新答案未定義回報

我正在用jQuery閱讀XML,但是當我嘗試顯示警報時,它完全正常工作;但是,當我嘗試返回值時,它總是給我一個消息,說明它未定義。

function getText(value){ 

    var val; 
    var lang; 
    var location; 
    lang=getLanguage(); 

    if (lang=='en') 
     lang=''; 
    else 
     lang+='.'; 

    location="resources/AppResources."+lang+'xml'; 

    $.get(location, function (xml) { 
     $(xml).find("data").each(function() { 

      var name=$(this).attr('name'); 

      if (name===value) 
       return $(this).find('value').text(); 
     }); 
    }); 

} 

這是調用它的代碼:

$(document).ready(function() { 
    alert(getText('AppTitle')); 
}); 

如果我在return語句添加提醒它讓我選擇的值。

小更新:

正如阿倫P佐尼在他的回答解釋說,在我的代碼錯過的部分是由Mozilla的這樣定義的callback

回調函數是一個函數作爲參數傳遞給另一個函數,然後在外部函數中調用該函數以完成某種例程或動作。

回答

1

你不能從一個異步方法返回一個值,最簡單的解決方法是使用一個回調函數,像這樣的:

function getText(value, callback) { 
    var val; 
    var lang; 
    var location; 
    lang = getLanguage(); 

    if (lang == 'en') 
     lang = ''; 
    else 
     lang += '.'; 

    location = "resources/AppResources." + lang + 'xml'; 

    $.get(location, function (xml) { 
     $(xml).find('data[name="' + value + '"]').each(function() { 
      callback($(this).find('value').text()); 
     }); 
    }); 

} 

$(document).ready(function() { 
    getText('AppTitle', function(value){ 
     alert(value); 
    }) 
}); 
+0

謝謝,但我不知道它只能在Firefox中: \當我嘗試在其他瀏覽器中測試時,它不會執行任何操作。 –

+0

像這樣的錯誤正在向我展示。 xmlhttprequest無法加載xml。訪問控制允許來源不允許訪問 –

+1

@ user2889347閱讀有關同源策略 –