0

角度ファクトリサービスを使用してjsonデータをフェッチできません。 デベロッパーツールコンソールでファイルを正しくロードしているように見えますが、依然としてデータが要求に定義されていません - 空を意味します。 角度ファクトリサービスを使用してjsonデータを取得できません

私のJSONファイル:

{ 
    "Translations": [ 
    { 
     "WhatsNew": [ 
     { 
      "English": "Whats New", 
      "Hebrew": "מה חדש?", 
      "Arabic": "الجديد في الموقع" 
     } 

     ], 
     "SearchByWord": [ 
     { 
      "English": "Search By Word", 
      "Hebrew": "חיפוש לפי ערך", 
      "Arabic": "البحث حسب الكلمة" 
     } 
     ], 
     "SearchByRoot": [ 
     { 
      "English": "Search By Root", 
      "Hebrew": "חיפוש לפי שורש", 
      "Arabic": "البحث حسب الجذر" 
     } 
     ], 
     "HebrewArabicIndex": [ 
     { 
      "English": "to the Hebrew-Arabic Index", 
      "Hebrew": "לאינדקס העברי-ערבי", 
      "Arabic": "إلى الفهرس العبري- العربي" 
     } 
     ], 
     "ArabicHebrewDictionary": [ 
     { 
      "English": "to the Arabic-Hebrew Dictionary", 
      "Hebrew": "למילון הערבי-עברי", 
      "Arabic": "إلى القاموس العربي- العبري" 
     } 
     ], 
     "ExamplesAndNotes": [ 
     { 
      "English": "Examples and Notes", 
      "Hebrew": "דוגמאות והערות", 
      "Arabic": "أمثلة    وملاحظات" 
     } 
     ], 
     "IdiomsAndExpressions": [ 
     { 
      "English": "Idioms and Expressions", 
      "Hebrew": "ביטויים וצירופים", 
      "Arabic": "تعابير لغوية" 
     } 
     ], 
     "WordsFromSameRoot": [ 
     { 
      "English": "Words From Same Root", 
      "Hebrew": "ערכים מאותו השורש", 
      "Arabic": "مشتقات الجذر" 
     } 
     ], 
     "SearchResults": [ 
     { 
      "English": "Search Results", 
      "Hebrew": "תוצאות החיפוש", 
      "Arabic": "نتائج البحث" 
     } 
     ] 
    } 
    ] 
} 

JSファイル:

adicApp.factory('langService', function ($http) { 
    return { 
     getLanguage: getLanguage, 
     setLanguage: setLanguage, 
     getLangRes: getLangRes 
    }; 

    var _lang; 
    function getLanguage() { 
     return _lang; 
    } 
    function setLanguage(lang) { 
     _lang = lang; 
    } 

    function getLangRes(lang) { 
     var langRes; 

     _lang = lang; 

     switch (lang) { 
      case "English": 
       langRes = getEnglishLangRes(); 
       break; 

      case "Hebrew": 
       langRes = getHebrewLangRes(); 
       break; 

      case "Arabic": 
       langRes = getArabicLangRes(); 
       break; 

      default: 
       langRes = getEnglishLangRes(); 
       break; 
     } 

     return langRes; 
    } 

    function getEnglishLangRes() { 
     var res = []; 
      //{ 
      // Partial1_Key: "Partial 1", 
      // Partial2_Key: "Partial 2", 
      // Search_String_Value_Key: "Search String Value", 
      // Count_Of_Words_Key: "Count Of Words", 
      // Data_Id_Key: "Data ID", 
      // Value_Key: "Value", 
      // Search_Category_Key: "Search Category", 
      // Whats_New: null 
      //}; 
     $http.get('../Scripts/Languages/languages.json').success(function (data) { 
       res = data.translations 
     }) 
     .error(function (data, status, headers, config) { 
      alert("Status: " + status); 
      //$log.error('Problem on selectCountry api Cities :' + status); 
     }); 

     return res; 
    } 

    function getHebrewLangRes() { 
     var res = 
      { 
       Partial1_Key: "חֵלֶק 1", 
       Partial2_Key: "חֵלֶק 2", 
       Search_String_Value_Key: "ערך מחרוזת חיפוש", 
       Count_Of_Words_Key: "ספירת מילים", 
       Data_Id_Key: "מספר מזהה", 
       Value_Key: "ערך", 
       Search_Category_Key: "חיפוש קטגוריה" 
      }; 

     return res; 
    } 

    function getArabicLangRes() { 
     var res = 
      { 
       Partial1_Key: "الجزء 1", 
       Partial2_Key: "الجزء 2", 
       Search_String_Value_Key: "قيمة سلسلة البحث", 
       Count_Of_Words_Key: "عدد الكلمات", 
       Data_Id_Key: "رقم الهوية", 
       Value_Key: "القيمة", 
       Search_Category_Key: "فئة البحث" 
      }; 

     return res; 
    } 
}); 

とビュー:なぜそれが機能していないによう

<div class="hidden-xxs hidden-xs hidden-sm col-md-3 col-lg-4"> 
      <div id="scrolling-news-sidebar" class="sidebar"> 
       <h2>{{langRes.WhatsNew[0]}}</h2> 
       <div class="marquee"> 

任意のアイデア?私は迷っている。私は答えをウェブで探してみましたが、これまで役に立たなかったようです。 私のjsonに問題があると思っていましたが、私のファイルに関する疑わしいものは見つかりません。

+0

これは非常に混乱しています。それぞれの言語を独立して取得する関数がありますが、同じJSONには、英語の同等物に基づく配列の言語文字列があります。私は、コードに「res」をあなたがヘブライ語/アラビア語で入力したものと同じにする何かが欠けているように感じます。つまり、プロパティとして** T **訳を持つオブジェクトをJSONファイルにロードしていますが、 '$ http'メソッドは** t **訳文(小文字)を探しています。 – Brian

+0

コードに起因する問題について質問するときに、人々が問題を再現するために使用できるコードを提供すれば、より良い回答が得られます。そのコードはすべきです... **最小** ** - 可能な限り小さなコードを使用して、同じ問題を引き起こします。 [最小限の完全かつ検証可能なサンプルを作成する方法](https://stackoverflow.com/help/mcve)を参照してください。 – georgeawg

答えて

1

開始するには、returnあなたの約束:

function getEnglishLangRes() { 
    var res = []; 
     //{ 
     // Partial1_Key: "Partial 1", 
     // Partial2_Key: "Partial 2", 
     // Search_String_Value_Key: "Search String Value", 
     // Count_Of_Words_Key: "Count Of Words", 
     // Data_Id_Key: "Data ID", 
     // Value_Key: "Value", 
     // Search_Category_Key: "Search Category", 
     // Whats_New: null 
     //}; 
    ͟r͟e͟t͟u͟r͟n͟ $http.get('../Scripts/Languages/languages.json') 
     ̶.̶s̶u̶c̶c̶e̶s̶s̶ .then(function (response) { 
      var data = response.data 
      res = data.translations 
      ͟r͟e͟t͟u͟r͟n͟ res; 
    }) 
     ̶.̶e̶r̶r̶o̶r̶ .catch(function (response) { 
     var status = response.status; 
     alert("Status: " + status); 
     //$log.error('Problem on selectCountry api Cities :' + status); 
     //IMPORTANT 
     throw response; 
    }); 

    ̶r̶e̶t̶u̶r̶n̶ ̶r̶e̶s̶;̶ 
} 

.catch方法応答ハンドラthrow statementそれが満たさ約束に拒否された約束を変換省略。

1

$ httpリクエストの成功と失敗のコールバックは、もはやカリー関数として「成功」または「エラー」となることはありません。彼らは約束のコンセプトに基づいています。したがって、コントロールブロック内に成功とエラーの両方を持つカース関数があります。

使用したフォーマットはAngularJS 1.4ライブラリでサポートされています。だから、使用しているAngularのバージョンを最初に確認してください。

あなたは以下のようにあなたの要求をフォーマットし、最新のAngularJS 1.6ライブラリを使用している場合 -

$http.get('data.json').then(function success(data) { 
     console.log(data) 
}, function error(res){ 
     console.log(res); 
}); 

を私はPlunkerでこれをチェックして、それが正常に動作しています。 https://embed.plnkr.co/eoLHfd3gzbTLAXdnNVXi/

+0

私は以下を使用しています。私は$ http.getから$ http.jsonpに切り替えましたが、構文エラーがあります:jsonの2行目の ':'の予期せぬトークン –

+0

$ http.getを使用して – Ashvin777

+0

を試してみてください。$ http.get nullを返す –

関連する問題