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

您似乎正在尝试从您自己的网页访问 Twitter API。不幸的是,出于安全原因,浏览器不允许这种访问。

您无法使用 Ajax/JSON 访问另一台服务器上的 API。

例如,假设您的网页托管在 www.myserver.com。仅当 API 来自 www.myserver.com 时,您才能访问它们。您无法访问来自 twitter 的 API。

这称为“同源策略”。

解决方案是在您的服务器上使用 PHP/Python/Perl 等服务器端语言创建代理。只需谷歌“ajax代理”即可获得一些解决方案。

于 2012-09-26T15:17:56.537 回答
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 回答