使用ajax从嵌套.json调用数据
calling data from nested .json using ajax
我是一个新来处理JSON的人,并被如何从嵌套的.json
文件中调用JSON数据所困扰。请检查下面的代码。。。
JSON格式
{
"hotels": {
"category": [{
"name": "Exotic and Luxurious",
"products": [{
"name": "Sofitel L'Imperial Resort and Spa",
"budget": "Luxery",
"location": "flic en flac",
"price": "71500"
}, {
"name": "Shanti Maurice a Nira Resort",
"budget": "Luxery",
"location": "Chemin Grenier",
"price": "88500"
}]
},{
"name": "In the Tourist Hub",
"products": [{
"name": "Sofitel L'Imperial Resort and Spa",
"budget": "Luxery",
"location": "flic en flac",
"price": "71500"
}, {
"name": "Shanti Maurice a Nira Resort",
"budget": "Luxery",
"location": "Chemin Grenier",
"price": "88500"
}]
},{
"name": "Close to the Beach and Market",
"products": [{
"name": "Sofitel L'Imperial Resort and Spa",
"budget": "Luxery",
"location": "flic en flac",
"price": "71500"
}, {
"name": "Shanti Maurice a Nira Resort",
"budget": "Luxery",
"location": "Chemin Grenier",
"price": "88500"
}]
},{
"name": "Private and Peaceful",
"products": [{
"name": "Sofitel L'Imperial Resort and Spa",
"budget": "Luxery",
"location": "flic en flac",
"price": "71500"
}, {
"name": "Shanti Maurice a Nira Resort",
"budget": "Luxery",
"location": "Chemin Grenier",
"price": "88500"
}]
}]
}
}
AJAX代码
jQuery(document).ready(function() {
jQuery.ajax({
url: 'hotels.json',
type: 'GET',
dataType: 'json',
success : function(data){
/*jQuery(data).each(function(index, value){
console.log(value.hotels.name);
})*/
//console.log(data.hotels.category[1].name);
//alert(JSON.stringify(data));
var i = 0;
jQuery(data.hotels.category).each(function(){
jQuery('.theme ul').append('<li data-role="'+data.hotels.category[i].name+'">'+data.hotels.category[i].name+'</li>');
i++;
})
jQuery(data.hotels.category).each(function(){
jQuery('.budget ul').append('<li data-role="'+data.hotels.category[i].name.products[0].name+'">'+data.hotels.category[i].name.products[0].name+'</li>');
i++;
})
}
})
.done(function() {
console.log("success");
})
.fail(function() {
console.log("error");
})
.always(function() {
console.log("complete");
});
});
HTML
<div class="theme">
<p>Hotel experience theme</p>
<ul>
</ul>
</div>
<div class="budget">
<p>Budget</p>
<ul>
</ul>
</div>
我想调用在budget
div 的<li>
中的类别中定义的产品的名称数据
更改:
jQuery(data.hotels.category).each(function() {...});
至:
jQuery.each(data.hotels.category, function() {...});
第一种形式用于循环选择中的DOM元素,第二种形式用于在Javascript数组和对象上循环。
在函数中,您可以使用this
来引用元素,而不需要使用data.hotels.category[i]
。
但是,如果继续使用data.hotels.category[i]
,则需要在第二个循环之前将i
设置回0
。或者你可以在一个循环中完成所有事情。.each()
将数组索引传递给函数,因此您不需要自己的变量。
最后,products
不是name
性质的子性质。
修复和简化的最终结果应该是:
jQuery.each(data.hotels.category, function(){
jQuery('.theme ul').append('<li data-role="'+this.name+'">'+this.name+'</li>');
jQuery('.budget ul').append('<li data-role="'+this.products[0].name+'">'+this.products[0].name+'</li>');
});
products
直接属于category
,所以你不必经过name
才能得到它,你应该直接去它,所以试着替换:
data.hotels.category[i].name.products[0].name
签署人:
data.hotels.category[i].products[0].name
希望这能有所帮助。
相关文章:
- Jquery调用数据列表选项卡或输入
- 获取标记以使用 API 调用数据进行更新
- 为什么不使用 AngularJs 因子从我的 REST API 调用数据
- 调用数据并将其从 C# 代码传递到 Javascript
- 递归 javascript 函数不会返回到父调用数据
- mvc函数返回的AJAX调用数据未定义
- 如何调用数据列表中按钮的asp回发
- 使用ajax从嵌套.json调用数据
- 不同/多个请求映射中的调用数据
- 通过代理服务器从Javascript调用数据
- 如何使用d3从嵌套的JSON数组中调用数据
- 没有选项,无法选择.如何用Javascript从数据库中调用数据
- JSON调用数据数组,其名称中有空格
- WSO2——在jaggery应用程序中调用数据服务
- 当页面加载后调用数据时,Jquery函数不工作
- Angular ui-grid:在每个数据单元渲染时调用数据网格头部注入的方法
- 从数据库中调用数据进行计算(PHP)
- 你能从中调用数据吗's自己的json对象
- 当不同的函数需要从数据库调用数据时,如何避免使用全局变量.(JS)
- 从$on调用数据绑定时不更新