Javascript JSON中的URL返回为未定义
我试图循环使用一些JSON,但一旦它到达url的值,它们就会返回为未定义。下面是我的JS的一个简化示例Javascript JSON中的URL返回为未定义,javascript,jquery,json,javascript-objects,Javascript,Jquery,Json,Javascript Objects,我试图循环使用一些JSON,但一旦它到达url的值,它们就会返回为未定义。下面是我的JS的一个简化示例 $.getJSON("https:../houston-locations.js", function(data){ $.each(data, function(i, data){ $("ul.mapList").append( '<li id="store-' + data.restaurant + '">'+ '<div
$.getJSON("https:../houston-locations.js", function(data){
$.each(data, function(i, data){
$("ul.mapList").append(
'<li id="store-' + data.restaurant + '">'+
'<div class="singleLocation">' +
'<a href="' + data.directions + '" target="_blank"><button class="directions">DIRECTIONS</button></a>' +
'<a href="' + data.url + '">Restaurant Details</a>' +
'</div>' +
'</div></li>'
)
})
});
最后的两个键“directions”和“url”是唯一返回为未定义的键。我做错了什么?问题在于:
$.getJSON("https:../houston-locations.js", function(data){
$.each(data, function(i, data) {
您在<代码>函数(i,data)< /代码>中改写变量<代码>数据< /代码>,考虑将其更改为<代码>值<代码>或其他内容。 使用此代码:
$.getJSON( "ajax/ejemplo.json", function( data ) {
var items = [];
$.each( data, function( key, val ) {
items.push( "" + val + "" );
});
$( "", {
"class": "my-new-list",
html: items.join( "" )
}).appendTo( "body" );
});
$.getJSON(“ajax/ejempo.json”,函数(数据){
var项目=[];
$。每个(数据、函数(键、值){
项目。推送(“+val+””);
});
$( "", {
“类”:“我的新列表”,
html:items.join(“”)
}).附于(“主体”);
});
$.getSOn的正确用法如上所述我发现解决方案非常简单。。这是一个缓存问题,因此没有加载新的JSON数据。但是,我确实更改了覆盖的“数据”值。谢谢大家 感觉很好。当您执行
console.log(data.url)
时,您是否得到了结果?我在控制台中未定义console.log(data.url)
您再次使用相同的变量:data
。执行类似于$.each(数据、函数(键、值){…})的操作
几乎可以肯定,这些值中的“/”字符存在问题。你可能不得不对这些进行编码。研究encodeURIComponent,看看这是否有帮助。我会检查网络选项卡中API的响应,以确保所有数据都已发送。为什么这只会影响两个属性“方向”和“url”?实际上我不知道,数据中的其他键也应该未定义。无论如何,在每个
函数中将数据
更改为值
可以解决您的问题。我尝试了此操作,但仍然无法定义这两个值。您能否在每个函数之前编写控制台。记录(数据)
,并将结果放在那里?
$.getJSON( "ajax/ejemplo.json", function( data ) {
var items = [];
$.each( data, function( key, val ) {
items.push( "" + val + "" );
});
$( "", {
"class": "my-new-list",
html: items.join( "" )
}).appendTo( "body" );
});
$.getJSON("https:../houston-locations.js",function(data){
console.log(data);
$.each(data, function( key, value ){
console.log(data.directions);
console.log(data.url);
});
});