1

JQuery の JSONP 機能を使用して、Web サイトから気圧データを取得しようとしています。

まず、Yahoo! XML データを JSON に変換するためのパイプ。次に、アラートでそのデータを受信して​​使用しようとしましたが、うまくいきませんでした。このJSFiddleには、単純で機能する例がありますが、より高度な JSON ファイルを使用しようとすると機能しません。

IBM によるこの記事も参照してください。

4

2 に答える 2

1

コードの問題

  • http://リンクに含めるのを忘れた

これを試す必要があります( を参照してくださいalert。タイトルに警告が表示されます)

<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();
});

注: オブジェクト内で$.getJSON()2 つを返します。parametersdata

     - 1st one is `count` that have integer value
     - 2nd one is `value`, which is an `Object`.

2 番目のパラメーターを取得するには、を使用する必要がありますdata.value

デモ

于 2012-05-26T14:25:25.867 に答える
1

コードには多くの問題があり、修正してインラインでコメントしました...

jsfiddle はこちら: http://jsfiddle.net/kritzikratzi/LQcVd/

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);
}
​
于 2012-05-26T15:03:13.133 に答える