JSON显示为";“未定义”;使用jQuery
我是一个完全的新手,所以也许有些答案需要解释一下。 我正在尝试创建一个包含JSON字符串的小html页面。该页面由Arduino在我的本地网络上托管(已测试并工作)。为了从JSON字符串中检索信息,我学习了jQuery的视频教程: 因此,我根据自己的需要对草图进行了一些修改,但最终还是出了问题。在控制台中,我可以看到我得到了JSON,但在页面中,值显示为“undefined” 代码如下:JSON显示为";“未定义”;使用jQuery,jquery,json,arduino,Jquery,Json,Arduino,我是一个完全的新手,所以也许有些答案需要解释一下。 我正在尝试创建一个包含JSON字符串的小html页面。该页面由Arduino在我的本地网络上托管(已测试并工作)。为了从JSON字符串中检索信息,我学习了jQuery的视频教程: 因此,我根据自己的需要对草图进行了一些修改,但最终还是出了问题。在控制台中,我可以看到我得到了JSON,但在页面中,值显示为“undefined” 代码如下: $(function(){ var $channels = $('#channels');
$(function(){
var $channels = $('#channels'); //store array
$.ajax({
type: 'GET',
url: 'http://192.168.0.110/ajax_inputs',
success: function(channels){
$.each(channels, function(i, channel){
$channels.append('<p>channel # '+ channel.canal +' name: '+ channel.name +'</p>')
console.log(channels.canal)
});
},
error: function() {
alert('error loading data')
}
});
});
问题是您引用的是
通道
变量,它在json中是一个对象whof objects
请参见显示访问循环中json的两种方法
循环如下:
$.each(channels, function(i, channel){
console.log(channels[i].canal);
console.log(channel.canal);
});
在第一个输出中,使用循环迭代器i
查询顶级数组通道
在第二种情况下,查询循环变量channel
,因此不需要循环迭代器查看值。请注意,您的append()
调用似乎完成了此操作,并且应该可以工作,只是控制台日志出错(容易出错:-)
您的错误是,您正在查询完整数组,但没有迭代器,实际上是在查找以下内容:
channels = { // note the curly brace for an object, which you need for text keys
'canal': '' // your code looks for this, which doesn't exist
0: {
...
}
}
起初,我使用的只是append()函数,它在页面上显示“undefine”。在我尝试访问json中的对象之前,一切都很正常。。。
channels = { // note the curly brace for an object, which you need for text keys
'canal': '' // your code looks for this, which doesn't exist
0: {
...
}
}