2

jsonとjquery(公開ツイートのみ)を使用してTwitterのデータベースにアクセスしようとしています。関数を書きました。ここにあります:

$(document).ready(function(){
alert("1");
$("button").click (function(){
    alert("2");
    $.getJSON("http://search.twitter.com/search.json?q=messi", function(data){
        alert("3");
    });
    alert("4");
});

ページが読み込まれると、アラートが表示され、期待どおりに1と表示されます。ボタンをクリックすると、2つのアラートが表示され、それぞれ2、4と表示されます。getJSON関数に問題があるようです。解決できませんでした。

4

1 に答える 1

1

あなたのコードは、クロスドメインリクエストを行うことで同一生成元ポリシーに違反しています。

クエリ文字列にパラメータを追加することで、 JSONPリクエスト(Ajaxリクエストではなく、同一生成元ポリシーの対象ではない)にすることでこれを修正できます。callback=?

$.getJSON("http://search.twitter.com/search.json?q=messi&callback=?", function(data){
    alert("3");
});

フィドル

jQuery.getJSON参照

リクエストURLにcallback=?パラメータが含まれている場合、jQueryは自動的にそれをJSONPリクエストと見なし、Ajaxリクエストのように「見える」ようにするこの抽象化レイヤーを追加します。data解析されたJSONP応答を含むオブジェクトを操作できます。

ps。開発用のDevTools(またはFirebug)を確認することをお勧めしますconsolealertこれは、さまざまなデータ型やネストされたデータ構造を表示できるのとは異なり、非ブロッキングです。

于 2013-03-22T21:50:05.580 に答える