Javascript 为什么我的JSON循环会设置值?

Javascript 为什么我的JSON循环会设置值?,javascript,jquery,json,Javascript,Jquery,Json,我真的很抱歉整天都在发帖。我对这种编码完全是个新手。基本上,在这里很多优秀人士的帮助下,我第一次建立了一个JSON。我试图根据输入来评估列表。以下是示例数据: { " films": [{ "label": "34", "value": "34", "currently_streaming": "1", "full_streaming_url": "http://www.url.com", "url

我真的很抱歉整天都在发帖。我对这种编码完全是个新手。基本上,在这里很多优秀人士的帮助下,我第一次建立了一个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'
     });
 });
var test=“34x25x36”;
$(文档).ready(函数(){
$.ajax({
数据类型:“json”,
beforeSend:函数(){
log('在Ajax请求启动之前!!');
},
成功:功能(数据){
控制台日志(数据);
警报(“EDDDDD”);
$。每个(数据、胶片、功能(i、对象){
$.each(对象、函数(属性、值){
//警报(属性+“=”+值);
对于(i=0;i”);
}else{}
}
});
});
},
错误:函数(jqXHR、textStatus、errorshown){
警报(“发生错误:+ErrorSprown”);
},
beforeSend:函数(){
log('Ajax请求完成!!');
},
url:'test.php'
});
});
编辑


当我在
else{}
部分中确实有一些内容时,它似乎会将整个内容运行多次,正确判断何时不匹配,但随后它似乎会再次运行,运行一个匹配的文本,然后运行一堆“不匹配”的文本。当
else{}
部分中没有任何内容时,它似乎设置了
film=test
的值。救命啊

你的成功功能搞砸了。。看起来,使用许多循环会让您感到困惑

也不要将其写入文档。。使用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 !!');
            }
        }
    }
}​
成功:函数(数据){
控制台日志(数据);
警报(“EDDDDD”);
var keys=[“标签”、“值”、“当前\u流媒体”、“完整\u流媒体\u url”、“url”]
对于(i=0;i
您正在循环浏览所有胶片,然后在其中循环浏览每个胶片的所有属性。然后在里面你又在循环播放所有的电影。这是无缘无故的循环。例如,如果你有100部电影,每部电影有5个属性,你将在所有电影中循环500次,从而写出你找到的500次的电影

您只需要一个循环就可以通过电影找到一个:

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

您还可以使用查找数组中的项:

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

演示:

您可以在此处提出任意数量的问题,只要他们遵循指导原则和常见问题解答。:)不使用document.write-设置一个DIV并设置innerHTML。从我所看到的,在第一个引号
。我不知道这在JSON中是否有效,但在常规JS中不会。谢谢!我无法做到这一点——我只想比较价值,这值得知道吗?所以test的值只是一个值键的值,我想我不明白你的意思。。你能再具体一点吗