Javascript 为什么我的JSON循环会设置值?
我真的很抱歉整天都在发帖。我对这种编码完全是个新手。基本上,在这里很多优秀人士的帮助下,我第一次建立了一个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
{
"
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的值只是一个值键的值,我想我不明白你的意思。。你能再具体一点吗