0

既にフォルダーがあり、その中にファイルがあり、特定の形式、つまり MODEL_RELEASEDATE で以下の名前が付けられています

スマートフォンという名前のフォルダー内のファイル名

SmartphoneA_11122012
SmartphoneA_01022013
SmartphoneA_09102013
SmartphoneA_10072012
SmartphoneA_12042012
**SmartphoneB_08282013**
SmartphoneB_04152013
SmartphoneB_08282012
SmartphoneB_01062013
.
.
.
.
and so on

フォーマットから特定のキーワードを使用できる jquery コードを書きたいと思います。上記のリストから、値SmartphoneAを渡すと、最新のリリース日でファイルを読み取ることができるはずです。キーワードSmartphoneBを渡す場合と同じです。

k/w SmartphoneBを渡すと、上で強調表示されたファイルから結果が提供されます。つまり、SmartphoneB_08282013

私の現在のコードは、特定の k/w でのみファイル名を読み取ります。いくつかの変更が必要です。

<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
    var metaKeywords=$('meta[name=keywords]').attr("content");//this utility works based upon the keywords on the pages.
    var reqdKeyword = new Array();
    reqdKeyword  = metaKeywords.split(",");
    var randKeyword = reqdKeyword[Math.floor(Math.random() * reqdKeyword.length)];
    var cdnUrl = "http://abc.com/xyz/mobiles/";
    var jsnUrl = ".json?callback=showDetail";
    var finalUrl= cdnUrl.concat(randKeyword.trim()).concat(jsnUrl);


    /*

           Rest of the code goes here

    */


</script>
4

2 に答える 2

0

URI (ファイル名) のリストを返すサーバー側のコードが必要になります。その後、それを解析する JavaScript コードを記述できます (ただし、この場合、サーバー側のコードが正しい名前を正しく返す方がよいでしょう)。クエリ文字列に基づく)。最悪のシナリオでは、dir.txt ファイルをサーバーに配置して、そのフォルダー内のすべてのファイルを一覧表示し、必要に応じて cron ジョブを実行して更新することができます。

jQuery は、サーバーが何らかの方法でサポートしない限り、サーバー上のリモート ファイルを一覧表示する方法がありません。

アップデート

必要なファイルを取得したら、次のようにします。

a)配列にトークン化します。たとえば、このように

 var names = dir.split("\n"); 

b) キーワードで始まる文字列のみを残し、キーワードを切り捨てる

 names = $(names).map(function(n,i) { 
    return (n.indexOf(keyword) == 0) ?  n.split('_')[1] : null;
 }).get();

['11122012', '01022013', ...] のような配列ができました。

c)この配列で最大の日付を見つけます

var dateNum = Math.max.apply( null,
  $.map(names,function(n,i){ return parseInt(
    n.replace(/(\d{2})(\d{2})(\d{4})/, function(match, month, day, year) {
            return year + month + day;
        })) 
  }) );
var maxDate = dateNum.toString().replace(/(\d{4})(\d{2})(\d{2})/,
         function (match, year, month, day) { return month + day + year; }
       );
var fileName = keyword + "_" + maxDate;

ほら、fileNameには最大日付の名前が含まれています。

日付を実際に解析して Date オブジェクトにするなど、他の方法もあります。また、配列マッピングと Math.max() イテレータを使用せずに、ファイルを 1 回反復処理するだけです。ここではコードの量が速度よりも優先されるため、最適なものを見つけるには、保守性を損なうことなくその断片をどこで再利用できるかにかかっています。

http://jsfiddle.net/Exceeder/VLB2E/

于 2013-08-28T06:06:35.307 に答える