【问题标题】:AJAX read JSON data from twitter search not workAJAX 从 twitter 搜索中读取 JSON 数据不起作用
【发布时间】:2012-09-18 06:16:15
【问题描述】:

我使用 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");
                    }
                });
            });
        }
    );

我只是测试它是否有效,当我按下搜索按钮时,它会提示“无法搜索”!

有什么帮助吗?

【问题讨论】:

  • 如果你向错误处理程序添加一个参数,它会给你错误。请阅读该错误并发布其内容。
  • dataType: 'jsonp'; 丢失。这必须在进行跨域调用时添加...参考我的答案。

标签: jquery json search twitter


【解决方案1】:

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

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

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

这称为“同源策略”。

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

【讨论】:

    【解决方案2】:

    使用以下 jQuery 代码。它在生产中对我有用

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

    您必须指定 &callback=? 参数才能让 jQuery 使用 JSON。 也许只是添加 &callback=? 会对您的示例有所帮助,但以上是我的做法。

    【讨论】:

      【解决方案3】:

      【讨论】:

        【解决方案4】:

        这是因为您没有使用 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");                     
        }                 
        });             
        });         
        }     
        ); 
        

        【讨论】:

        • 谢谢你,这行得通!那么我们可以通过使用原始 javascript 来完成同样的任务吗?以及如何做到这一点?
        • 啊,我的意思是我不使用 jquery,而是使用 javascript。如何做到这一点:(
        • 我建议你使用 Jquery 效率更高。如果你想对普通 js 做同样的事情,那么你可以创建 xmlhttp 对象。参考w3schools.com/ajax/tryit.asp?filename=tryajax_first
        • 谢谢,现在我在将数据写入文本文件时遇到问题。!人家说js不能写文件,所以我用jsp来做这个任务,但是js变量很难赋值给jsp代码! (PS: 我不允许使用 PHP :( )
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-08
        • 1970-01-01
        • 2011-10-11
        • 1970-01-01
        • 2014-10-07
        相关资源
        最近更新 更多