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{ }部分中确实有某些内容时,它似乎多次运行整个内容,正确判断何时不匹配,但随后它似乎再次运行,运行一个匹配的文本,然后运行一堆“不匹配” “ 文本。当该部分中没有任何内容时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

您正在循环播放所有电影,然后在其中循环播放每部电影的所有属性。然后在里面你再次循环播放所有电影。这是很多无缘无故的循环。例如,如果您有 100 部电影,每部电影有 5 个属性,您将循环浏览所有电影 500 次,从而写出您找到 500 次的电影。

您只需要一个循环来循环播放电影并找到一个:

$.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 回答