2014-06-07 12 views
-3

我有一個工作的ajax函數傳遞數組中的值。事情是,因爲我將有大量的翻譯,我想創建一個包含所有翻譯的json文件,然後將其轉到我的主要ajax函數。事情是,我的價值觀不會在文件上加載,只是當我改變語言。在文檔準備好時將Json數組值初始化爲現有的ajax函數

我的函數i18n它不會加載o文檔準備就緒,它給我一個錯誤「Uncaught TypeError:無法讀取未定義的屬性'en'。我試圖執行我的i18n一個我的updateForecast函數,它加載文檔準備好的值,但然後我在循環中。

我做錯了什麼?對於快速參考,您可以在這裏看到工作實例 - https://dl.dropboxusercontent.com/u/23044665/test/index.html

$(function(){ 


     // 
     // Translations 
     // 
     var trans; 
     function i18n (key, value) { 

        $.getJSON("translations.json", function(json){ 
       trans = json[0]; 
      }); 

      if (trans != 'undefined' && trans[language] != 'undefined' && trans[language][key] != 'undefined') { 
       return trans[language][key] 
      } 

      return value; 
     } 




      function updateForecast() { 

      var forecast = "http://api.openweathermap.org/data/2.5/forecast/daily?id=" + city_id + "&units=" + units + "&cnt="+ (parseInt(forecast_days)+1) +"&lang=en"; 

      // Define Ajax Call 
      $.ajax({ 
       url: forecast, 
       async: true, 
       dataType: 'json', 
       success: function(data) { 

        // Execute Translation function 
       i18n(); 

        var firstItem = data.list[0]; 
        var secondItem = data.list[0].weather[0]; 

       alert(trans[language].weather[secondItem.id]); 


       }, 
       error: function(data) { 
       alert("ERROR:"); 
       } 
      }); 

     } 

     updateForecast(); // for init update! 

    }); 
+0

你真的需要做的更好,解釋更精確和一些代碼你的問題是 – charlietfl

+0

你是對的,對不起!我更新了我的帖子,更詳細地解釋了我的問題! :) –

回答

-1

收集JS數組中的所有數據(需要以及分類的數據),然後使用「JSON.Stringify」得到JSON格式的數據。現在你可以通過AJAX調用/發送數據

+0

如果你想動態加載數據,請繼續嘗試使用jquery,如下所示:$(document).on('someSelector','someEvent','someData'); – nikhil

+0

我想讓所有的數據都可以訪問。如果你點擊我的鏈接,在文檔準備就緒後,你會看到一個控制檯錯誤,說「未捕獲的TypeError:無法讀取未定義的屬性'en'」。然後,如果您在選擇框中選擇語言,則所有數據都按預期加載,並且不再有控制檯錯誤!爲什麼?順便謝謝你的評論! –

+0

我不明白爲什麼有人在我的答案上給了一個-ve標誌......我的回答只是一個使用JSON的想法。Stringify – nikhil

0

好的,我解決了這個問題。而不是使用在我的國際化功能的這種的getJSON的

$.getJSON(url, function(json){ 
     trans = json[0]; 
    }); 

我用這樣一個與參數異步Ajax調用:假的。

$.ajax({ 
     url:url, 
     async: false, 
     dataType: 'json', 
     success: function(json) { 
      trans = json[0]; 
     } 
    }); 

並且voilá,我的json數據被加載到準備好的文檔上,並被我的主函數updateForecast處理。

再次感謝誰試圖幫助我。