1

jqueryを使用してTwitterから検索結果を取得しましたが、機能しません。コードの間違いに対処できますか?フォーム検索は次のとおりです。

<label>Enter keyword: </label><input type="text" id="keyword" name="keyword" size="50" autocomplete="off"/>
    <input type="button" name="btnsearch" id="btnsearch" value=" Search " />

そしてここにjqueryコードがあります:

$(document).ready(
        function(){
            $("#keyword").focus();
            $("#btnsearch").click(function(){
                var keyword = $("#keyword").val();                          
                if(keyword == null || keyword == "") return;
                $("#results").html("<img src='loading.gif'/>");                 
                $.ajax({
                    url:'http://search.twitter.com/search.json?q='+keyword+'&rpp=50',
                    dataType:'json',
                    success:function(json){
                        $("#results").remove();
                        alert("Successfull");
                    },  
                    error:function(){
                        alert("cant search");
                    }
                });
            });
        }
    );

動作するかどうかをテストするだけで、検索ボタンを押すと「カントサーチ」と警告されます!

何か助けはありますか?

4

4 に答える 4

2

これは、dataType: 'jsonp';を使用していないためです。これは、クロスドメイン データにアクセスするときに追加するコードです。

以下は作業コードです(私はそれを試しました)

$(document).ready(         
function(){             
$("#keyword").focus();            
$("#btnsearch").click(function(){                 
var keyword = $("#keyword").val();                                           
if(keyword == null || keyword == "") return;                 
$("#results").html("<img src='loading.gif'/>");                                  
    $.ajax({ 
    type: 'GET',
    dataType: 'jsonp',
    contentType: "application/json; charset=utf-8",
    url:'http://search.twitter.com/search.json',
    data: 'q='+keyword+'&rpp=50',
    success:function(json){                         
    $("#results").remove();
    alert("Successfull");                     
    },
error:function(){                         
alert("cant search");                     
}                 
});             
});         
}     
); 
于 2012-09-26T15:24:05.990 に答える
1

デモ: http: //jsfiddle.net/cAVsS/1/

コールバックはJSONPである必要があります: https ://dev.twitter.com/docs/api/1/get/search

于 2012-09-26T15:23:57.283 に答える
0

次のjQueryコードを使用します。それは私にとって本番環境で機能します

$.getJSON('http://search.twitter.com/search.json?q=' + keyword + '_de&callback=?', function(json) {
    alert(JSON.stringify(json));
});

&callback =?を指定する必要があります jQueryにJSONを消費させるためのパラメーター。たぶん&callback =を追加するだけですか?あなたの例では役に立ちますが、上記は私がそれをした方法です。

于 2012-09-26T15:23:17.657 に答える
0

ご自身の Web ページから Twitter API にアクセスしようとしているようです。残念ながら、セキュリティ上の理由から、この種のアクセスはブラウザによって許可されていません。

Ajax/JSON を使用して別のサーバー上の API にアクセスすることはできません。

たとえば、Web ページが www.myserver.com でホストされているとします。www.myserver.com からの API のみにアクセスできます。Twitter からの API にはアクセスできません。

これを「同一オリジンポリシー」と呼びます。

解決策は、PHP/Python/Perl などのサーバー側言語を使用してサーバー上にプロキシを作成することです。いくつかのソリューションについては、「ajax プロキシ」をグーグルで検索してください。

于 2012-09-26T15:17:56.537 に答える