2016-10-21 6 views
0

メディア(画像、オーディオ、ビデオ)がJSONデータに存在する場合、対応するメディアを画面に表示する必要がある場合は、メディアをチェックしているので、JSONデータで要約をレンダリングしています。 だから私はメディアを含むすべての値をチェックしているか、ファイルタイプに基づいていません。私は、その、他の形式に来るとき、エラーを発生し、別のデータはここでJSONデータにメディアが含まれているかどうかを確認していますか?

値私のJSコード

 var disp=[ 
        { 
        "Session_ID": 1, 
        "column1": "http://dev.starport.in/phpupload/dentist.jpeg", 
        "Session_Name": "0", 
        "Session_Code": "0", 
        "Start_Time": "09:30", 
        "End_Time": "09:30", 
        "Staff": 0, 
        "Date": "/Date(-2188013400000)/", 
        "Status": 1, 
        "RowNumber": 1 
        } 
       ]; 
     var mediatype; 
     var media; 
     var fname; 
     $.each(disp[0],function(key,value) 
     { 
      fname=value; 
      media=0; 
      var filetype; 

      if(fname.indexOf(".")> -1)   // problem 
       filetype = fname.split('.').pop(); 
      else 
       return true; 

      if($.inArray(filetype, ['gif','png','jpg','jpeg']) >= 1) { 
       media=1; 
       mediatype="image"; 
       return false; 
      } 
      else if($.inArray(filetype, ['mkv','mp4','vob']) >= 1) { 
       media=1; 
       mediatype="video"; 
       return false; 
      } 
      else if(filetype == "mp3") { 
       media=1; 
       mediatype="audio"; 
       return false; 
      } 
      else 
      { 
       media=0; 
      } 
     }); 
     console.log(mediatype); 

を確認しながら、そこで私のコードは、文字列のために働き、また、適切なアイテムをレンダリングする問題に直面してきました。..バックエンドでの作業とAPIの構造 - 応答事前におかげソリューションへ

+1

は、なぜあなたはこれを試していけません。各オブジェクトのプロパティを調べる代わりに、オブジェクトをループして.colum1プロパティを使用して、目的の結果を得るだけです。 – maverickosama92

+0

私はcolumn1の代わりにすべてのフィールドをチェックしたい、becoz私はメディアがあるフィールドを知りません – Keerthivasan

+1

@keerthivasana:今このフィドルをチェックしてください:https://jsfiddle.net/maverickosama92/jk5nsz4z/1/ – maverickosama92

答えて

1

このコードは、disp配列内のすべてのアイテムに対して繰り返し処理を行い、各アイテムについてはkey - valueを繰り返します。

問題は最初の値がintなので、indexOfを使用できないということでした。あなたは、最初の値が、これは非常に悪い習慣ですstring

var disp = [{ 
 
    "Session_ID": 1, 
 
    "column1": "http://dev.starport.in/phpupload/dentist.jpeg", 
 
    "Session_Name": "0", 
 
    "Session_Code": "0", 
 
    "Start_Time": "09:30", 
 
    "End_Time": "09:30", 
 
    "Staff": 0, 
 
    "Date": "/Date(-2188013400000)/", 
 
    "Status": 1, 
 
    "RowNumber": 1 
 
}]; 
 
var mediatype; 
 
var media; 
 
var fname; 
 

 
disp.forEach(function(item) { 
 
    var media = 0; 
 
    var filetype; 
 

 
    for (var key in item) { 
 
    if (typeof item[key] === "string") { 
 
     if (item[key].indexOf(".") > -1) { 
 
     filetype = item.column1.split(".").pop(); 
 
     break; 
 
     } 
 
    } 
 
    } 
 
    var media = 0; 
 
    var filetype; 
 

 
    if (item.column1.indexOf(".") > -1) { 
 
    filetype = item.column1.split(".").pop(); 
 
    } 
 

 
    if ($.inArray(filetype, ['gif', 'png', 'jpg', 'jpeg']) >= 1) { 
 
    media = 1; 
 
    mediatype = "image"; 
 
    return false; 
 
    } else if ($.inArray(filetype, ['mkv', 'mp4', 'vob']) >= 1) { 
 
    media = 1; 
 
    mediatype = "video"; 
 
    return false; 
 
    } else if (filetype == "mp3") { 
 
    media = 1; 
 
    mediatype = "audio"; 
 
    return false; 
 
    } else { 
 
    media = 0; 
 
    } 
 
}); 
 

 
console.log(mediatype);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

NOTE

であることを確認する必要があります。メディアがどこに保存されているかを知っておく必要があります。例えば、End_Timeの中にあなたのメディアを格納するのは非常に奇妙です。 indexOfは、文字列関数です:最善の解決策は、あなたのAPIとJSONを変更することであろう

+0

私はcolumn1の代わりにすべてのフィールドをチェックしたいと思っていますbecoz私はメディアがあるフィールドを知りません – Keerthivasan

+0

メディアは例えば 'Start_time'の中に入っていますか?その場合は、APIを変更する必要があります。これは作業のひどい方法です。 – Weedoze

+0

はい、それはどんなフィールドでもかまいません。私はAPIを変更するために見ていきます。 – Keerthivasan

1

問題を待ち

以下の手順に従ってください。

  1. メディアをバックエンドに適切に保存します。あなたのテーブルが2つ以上のフィールドを持つ であるとしましょう。 media_typeとmedia_pathです。
  2. keyが "media_type"、 "media_path"という適切なJSON応答を持っています。
  3. このJSON応答を非常に迅速に解析できるはずです。
+0

ありがとう素晴らしい提案ですが、今私はcolumn1の代わりにすべてのフィールドをチェックしたい、becoz私はどのフィールドには、テンプレートとして私の要約スクリプトを作るためのメディアを知っている。すべてのシナリオに適しています – Keerthivasan

0

問題を送りました。そしてあなたのコードはすべてのJSON属性を反復処理します。また、数字も含まれています。これは問題を引き起こしています。おそらく、適切な属性に直接ナビゲートするほうがよいでしょう。

console.log(disp[0].column1) 
"http://dev.starport.in/phpupload/dentist.jpeg" 

私の意見では、問題を再考する必要があります。 https://jsfiddle.net/jk5nsz4z/:=)

よろしくルーベン

関連する問題