我正在开发我的第一个(EVER!)JSON项目,我想知道如何从JSON对象获取特定数据。我已将其导入,并且刚刚发现(谢谢堆栈溢出!)如何引用该数据。我现在能够做到这一点,下面的代码是我已经得到的。我有一堆通过数据的警报。我现在需要做的是实际循环并评估下面显示的JSON的值字段。我无法弄清楚如何选择它,以及如何循环它。我已经尝试了data.films.value.value和data.films.value.value [0]之类的东西,我确信它接近于那个,但我无法弄清楚如何获取数据进入一个形式,让我使用像常规字符串那样的特定元素。我最终要做的是将每个films.value元素与用户输入的字符串进行比较,如果我无法获得该元素,我不知道如何做到这一点!
{
"
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"}]
}
这是加载它的代码。它返回成功,但我无法从JSON对象获取任何数据:
$(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);
});
});
},
error : function(jqXHR, textStatus, errorThrown) {
alert("Error occurred: " + errorThrown);
},
beforeSend : function() {
console.log('Ajax Request Complete !!');
},
url: 'test.php'
});
});
非常感谢任何和所有帮助!
更新的 我现在正在尝试使用我从大家这里得到的好建议。这就是我现在所拥有的:
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("Your movie is hot");
document.write(theFilm);
}
else {
}
}
});
});
},
error : function(jqXHR, textStatus, errorThrown) {
alert("Error occurred: " + errorThrown);
},
beforeSend : function() {
console.log('Ajax Request Complete !!');
},
url: 'test.php'
});
});
当我尝试从循环中打印出来时,它似乎有效,但我遇到了问题。我最终需要将这些数据与一些用户输入进行比较,我在顶部将其定义为var test。我希望它比较每个变量来测试,但由于某种原因,它似乎是设置每个变量来测试。我的循环有问题吗?
答案 0 :(得分:0)
尝试
films[0].label
会给你34
要迭代,您需要使用
$.each(data.films, function(i, object) {
// And Not
$.each(json.films, function(i, object) {
试试这个
更新后的代码:
因为eacy arrach项目是一个Object,你需要再写一个循环来访问它们内部的内容..
$.each(data.films, function() {
$.each(this, function(j, val) {
console.log('Key - ' + j + ' :: Value - ' + val);
});
});
这应该适合你的情况
function(data) {
console.log(data);
alert("Edddddddd");
$.each(data.films, function(i, object) {
$.each(object, function(property, value) {
alert(property + "=" + value);
});
});
}
//使用For循环
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]] ) ;
}
}
检查FIDDLE
答案 1 :(得分:0)
试试这个:
success: function(data) {
for (var item in data.films) {
alert(item.label);
}
}
答案 2 :(得分:0)
你试图循环 json.films 而不是 data.films ......
答案 3 :(得分:0)
{
"films": [{ // <-- to access this data.films
"label": "34", // to access this data.films[0].label - this is the first object in the array
"value": "34", // to access this data.films[0].value
"currently_streaming": "1", // // to access this data.films[0].currently_streaming
"full_streaming_url": "http://www.url.com", // and so on
"url": "http://www.url.com"} // and so on
{
"label": "A Different Color", // to access this data.films[1].label - this is the second object in the array
// arrays are zero indexed
"value": "A Different Color", // to access this data.films[1].value
"currently_streaming": "1",
"full_streaming_url": "http://www.url.php",
"url": "http://www.url.com"}]
}
所以当你循环时 - 你想循环数组的位置..
$.each(data.films, function(k,v){
console.log(v.value); // <-- this will give you the value for both
// now that you're here you can get value for each property by
// v.label
// v.value
// v.currently_streaming
// v.full_streaming_url
// v.url
});