Javascript 从JSON文件检索数据

Javascript 从JSON文件检索数据,javascript,jquery,json,jsonp,yahoo-pipes,Javascript,Jquery,Json,Jsonp,Yahoo Pipes,我试图使用JQuery的JSONP特性从网站检索气压数据 首先,我用雅虎!管道将XML数据转换为JSON。然后我尝试在警报中接收并使用这些数据,但没有成功。在本文中,我有一个简单的工作示例,但当我尝试使用更高级的JSON文件时,它不起作用 另请参见IBM。代码中的问题 您忘记在链接中包含http:// 您需要尝试此操作(请参阅提醒。它将提醒标题) 要获取第二个参数,需要使用data.value 代码有很多问题,我修复了它,并对这些问题进行了评论 请点击此处: 1.)您必须在JSFIDLE中

我试图使用JQuery的JSONP特性从网站检索气压数据

首先,我用雅虎!管道将XML数据转换为JSON。然后我尝试在警报中接收并使用这些数据,但没有成功。在本文中,我有一个简单的工作示例,但当我尝试使用更高级的JSON文件时,它不起作用


另请参见IBM。

代码中的问题

  • 您忘记在链接中包含
    http://
您需要尝试此操作(请参阅
提醒
。它将提醒标题)

要获取第二个参数,需要使用
data.value

代码有很多问题,我修复了它,并对这些问题进行了评论

请点击此处:


1.)您必须在JSFIDLE中选择jQuery,而不是(默认)Mootools。2.)打开浏览器的javascript控制台,查看发生的错误。3.)您尚未定义回调函数!我在第一个链接上得到了404。这一页不完整found@akellehe他还忘记了链接中的
http://
。它说
data.value
在错误控制台中是未定义的,即使在添加
http://
并更改为JQuery(我在参考资料中添加了它)之后也是如此。看起来您只是在学习javascript。我只能建议下次尝试以较小的增量进行测试。了解哪些部件出现故障以及原因。如果你只是写了一堆代码,然后猜猜问题出在哪里,你总是会得到像这个问题一样的误导性标题(真的:我投了反对票,因为实际问题与标题完全无关)。你也可以看看我的答案,我更正了你的代码,警报会吐出压力值。祝你的项目好运!对不起,我没有萤火虫。添加console.log有什么意义?在您的演示中,单击div仍然没有显示警报。Thanks@Ian如果你要做JS开发,我想强烈建议你学习firebug或者如何使用其他浏览器的JavaScript控制台@Ian我会摆弄
alert()
,但你应该用它来学习Firebug我不使用Firebug,因为我只会使用Firefox开发工具(Firebug是Firefox中速度最慢的插件之一)。我现在看到了警报,但我没有找到气压计,这意味着
data.value.items.data.parameters.pressure.value
不正确。有什么想法吗?在通过JavaScript整理程序运行JSON文件后,我检查了它,但我无法找出该路径的错误我现在开始工作了。我唯一的问题是当我进入
参数时。
数据
下有两个
参数
,如何选择第二个?
<div onClick="$.getJSON('http://pipes.yahoo.com/pipes/pipe.run?_id=467a55b506ba06b9ca364b1403880b65&_render=json&textinput1=40.78158&textinput2=-73.96648&_callback=?', function(data){alert(data.value.title)})">Click Me</div><!--I can't get this to work-->
<div class="loadjson">Click Me</div>


function barometer() {
    $.getJSON('http://pipes.yahoo.com/pipes/pipe.run?_id=467a55b506ba06b9ca364b1403880b65&_render=json&textinput1=40.78158&textinput2=-73.96648&_callback=?', function(data) {
        alert(data.value.title);
    })
}

$('div.loadjson').on('click', function() {
    barometer();
});
     - 1st one is `count` that have integer value
     - 2nd one is `value`, which is an `Object`.
function loadBarometerData(){
    // 1. it's not generally bad practice to put stuff in the 
    //    onClick listeners, but really... don't put such long code there! it's not readable ... 
    // 2. you were missing a "http://" and it was downloading
    //    jsfiddle.net/pipes.yahoo.com/....
    // 3. getJSON doesn't return a result immediately, you need to use callbacks for that!! 
    $.getJSON('http://pipes.yahoo.com/pipes/pipe.run?_id=467a55b506ba06b9ca364b1403880b65&_render=json&textinput1=40.78158&textinput2=-73.96648&_callback=?' ).success( barometer ); 
}; 

function barometer(data) {
    console.log( data );
    // 4. you had items instead of items[0]
    //    similar with data. 
    alert(data.value.items[0].data[1].parameters.pressure.value);
};

function showPrice(data) {
    alert("Symbol: " + data.symbol[0] + ", Price: " + data.price);
}
​