0

連日投稿で本当にすみません。私はこのコーディングの初心者です。基本的に、ここにいる多くの素晴らしい人々の助けを借りて、私は初めて JSON をセットアップしています。入力に対してリストを評価しようとしています。サンプルデータは次のとおりです。

    {
    "

films": [{
        "label": "34",
        "value": "34",
        "currently_streaming": "1",
        "full_streaming_url": "http://www.url.com",
        "url": "http://www.url.com"},
    {
        "label": "A Different Color",
        "value": "A Different Color",
        "currently_streaming": "1",
        "full_streaming_url": "http://www.url.php",
        "url": "http://www.url.com"}]
}​

ここに私のコードがあります。私はついにそれを手に入れました(皆さんありがとう!) 私が欲しかった値の部分を選択する. 次に、if/else ステートメントでそれを比較しようとしましたが、奇妙なことをしています。まず、ファイルに実際に存在するよりも多くの値を取得しているようですが、それについては完全にはわかりません。第二に、しかし、それは値を比較していないようですが、私が反復している値を別の値と等しく設定しています! 理解できない!

 var test = "34x25x36";
 $(document).ready(function () {
     $.ajax({
         dataType: 'json',
         beforeSend: function () {
             console.log('Before Ajax Request Starts !!');
         },
         success: function (data) {
             console.log(data);
             alert("Edddddddd");
             $.each(data.films, function (i, object) {
                 $.each(object, function (property, value) {
                     //alert(property + "=" + value);
                     for (i = 0; i < data.films.length; i++) {
                         var theFilm = (data.films[i].value);
                         if (theFilm == test) {
                             document.write(theFilm);
                             document.write(test + "<br>");
                         } else {}
                     }
                 });
             });
         },
         error: function (jqXHR, textStatus, errorThrown) {
             alert("Error occurred: " + errorThrown);
         },
         beforeSend: function () {
             console.log('Ajax Request Complete  !!');
         },
         url: 'test.php'
     });
 });

編集

セクションに何かがあるelse{ }場合、一致しない場合は正しく判断して、全体を複​​数回実行するように見えますが、もう一度実行して、1 つの一致のテキストを実行し、次に一連の「一致しない」を実行するようです" 文章。else{}セクションに何もない場合は、 の値を設定するようですtheFilm = test。ヘルプ!

4

2 に答える 2

1

あなたの成功関数はめちゃくちゃです..多くのループを使用して混乱しているように見えます..

また、ドキュメントに書き込まないでください。console.log または alert を使用してデバッグします。

このアプローチを試してください

success: function(data) {
    console.log(data);
    alert("Edddddddd");
    var keys = ["label", "value", "currently_streaming", "full_streaming_url", "url"]
    for (i = 0; i < data.films.length; i++) {
        for (j = 0; j < keys.length; j++) {
            // alert('Key - ' + keys[j] + ' :: Value - ' + data.films[i][keys[j]]);
            var theFilm = data.films[i][keys[j]];
            if (theFilm == test) {
                alert('TheFilm Variable is : ' + theFilm);
                alert('Test Variable is : ' + test );
            }
            else {
               alert('No Match Found !!');
            }
        }
    }
}​
于 2012-09-21T20:23:01.767 に答える
0

すべてのフィルムをループし、その中で各フィルムのすべてのプロパティをループしています。その中で、再びすべてのフィルムをループします。それは理由もなくたくさんのループです。たとえば、それぞれに 5 つのプロパティを持つ 100 個のフィルムがある場合、すべてのフィルムを 500 回ループすることになり、見つかったフィルムを 500 回書き出すことになります。

フィルムをループして 1 つを見つけるために必要なループは 1 つだけです。

$.each(data.films, function(i, object) {
  var theFilm = object.value;
  if (theFilm == test) {
    document.write(theFilm);
  }
});

デモ: http://jsfiddle.net/baJtf/

grepメソッドを使用して、配列内の項目を検索することもできます。

var film = $.grep(data.films, function(f){
  return f.value == test;
});
if (film.length == 1) {
  document.write(film[0].value);
}

デモ: http://jsfiddle.net/baJtf/1/

于 2012-09-21T20:31:29.613 に答える