2009-07-21 6 views
2

私はjsonのノブです(jqueryのビットを知っています)....小さなスクリプトを作成しようとしています 私はある時間私は、オンラインで読んだ緯度/経度 とは、からのビットで、このスクリプトを作った:JSONPコールバックが失敗し、javascript/jqueryのヘルプが必要

$.getJSON("http://ws.geonames.org/timezoneJSON?lat=47.01&lng=10.2&callback=?", 

    { 'uID': 1 }, 

    function(data) { 
     $.each(data, function(i, item) { 
      $("<span/>").html(item.time).html(".nowtime"); 
     }); 
    }); 

言うまでもなく、それは...動作しません。誰かがそれを私に手を出すとも説明できるもの $( "").html(item.time).html( "。nowtime"); を意味します。 http://www.geonames.org/export/web-services.html#timezone

おかげ

+0

火災の虫。それはどこで失敗するのですか?リクエストを送信しますか?またはコールバックで? – geowa4

+0

nvm私はそれを走らせた。コールバックで失敗します。 Firebugはデバッグするのには大したものではありませんが、少なくとも私はそれがXSSではないことを合理的に確信できます。 – geowa4

答えて

3

私はもともと問題が同一生成元ポリシーの中で最も可能性が高いと思った。ここでは

は、JSONソース参照です(私は最初が何であるかを理解していません)。 URLに対してAJAXリクエストを行うには、Javascriptコードを含むページと同じドメイン(およびポート)に存在する必要があります。

しかし、ジョージIVの修正後、私はそれをチェックアウトしました。

コールバックで返されるdataオブジェクトはJSON評価オブジェクトです。配列ではありません。ほとんどの場合、あなたのコードのようなものを読んだはずです:セレクタはおそらく間違っている

$.getJSON("http://ws.geonames.org/timezoneJSON?lat=47.01&lng=10.2&callback=?", 
    { 'uID': 1 }, 
    function(data) { 
    $("<span/>").html(data.time); // Or maybe with a different selector (see below) 
    } 
); 

を、あなたはtestのidを持つDIVに結果を置くために、例えば、お勧めします。これは、ID test(ハッシュ記号(#)、それはアイデアであることを示している)を持つオブジェクトを取得し、と言っている何

$("#test").html(data.time); 

、およびコンテンツを更新します。その場合のセレクタを含む行に変更する必要がありますdata.timeに設定されています。

+0

nope。火かき棒でそれを自分で実行してください。それはコールバックで壊れます。 – geowa4

+0

あなたは正しいです、私は目を信じることができません!しかし、答えを修正しました。 –

+0

それは大丈夫です。それは、stackoverflowがその才能のために使用するものです。 – geowa4

1

スパンコードはスパン要素を作成し、HTMLを返された時間値に設定しています。しかし、HTMLはすぐに ".nowtime"に設定されますが、実際にはDOMに追加されることはありませんので、コードは間違っています。私は最後の.html( '。nowtime')は本当に.addClass( '。nowtime')でなければならないと思います。どこかに.appendTo(???)があるはずですが、追加する必要があります。

EDITは:また

、私はあなたがそれぞれの機能を必要としないと思います。それはデータオブジェクトのメンバーを反復しているようです。 timeプロパティを直接使用する必要があります。

例(ただし、あなたはおそらく、それは他の場所でDOMに追加する):

$(function() { 
    $.getJSON("http://ws.geonames.org/timezoneJSON?lat=47.01&lng=10.2&callback=?", { 'uID': 1 }, function(data) { 
     $("<span/>").html(data.time).appendTo('body'); 
    }); 
}); 

注:お使いのJSONPコールはオブジェクトの配列を返すようにした場合、その後あなたがそれらを反復処理する必要があるだろうそれぞれの方法で私は、オブジェクトの配列を返すメソッドがあるかどうかを知るためのサービスについて十分に知りません。しかし、この呼び出しはありません。

+0

私たちは勝者を持っています!私はちょうど火かき棒でそれを走らせました、問題は 'each'を使用しています。 'i'はキーであり、' item'は彼の場合の値です。 – geowa4

0

あなたは何が間違っているのかはっきりしていません。コールバックは、nowtimeフィールドを取得してページのコントロールに配置しようとしているようです。私はこれと思う:

$("").html 

結果がどこに行くのかを二重引用符で囲むセレクターが必要です。 $( "#myfield")のようなもの....

+0

「今すぐ」のプロパティはありません。私はそれが適用されるべきクラスだと思っていますが、十分なコード(マークアップ)がありません。 – tvanfosson