Jquery AJAX从twitter搜索读取JSON数据无效
我使用jquery从twitter检索搜索结果,但它不起作用,您能解决我代码中的错误吗? 以下是表格搜索:Jquery AJAX从twitter搜索读取JSON数据无效,jquery,json,search,twitter,Jquery,Json,Search,Twitter,我使用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=" Se
<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");
}
});
});
}
);
$(文档)。准备好了吗(
函数(){
$(“#关键字”).focus();
$(“#btnsearch”)。单击(函数(){
var关键字=$(“#关键字”).val();
如果(关键字==null | |关键字==“”)返回;
$(“#结果”).html(“”);
$.ajax({
网址:'http://search.twitter.com/search.json?q=“+关键字+”&rpp=50',
数据类型:'json',
成功:函数(json){
$(“#结果”).remove();
警报(“成功”);
},
错误:函数(){
警报(“无法搜索”);
}
});
});
}
);
我只是测试它是否工作,当我按下搜索按钮时,它会提示“无法搜索”
有什么帮助吗?您似乎正在尝试从自己的网页访问Twitter API。不幸的是,出于安全原因,浏览器不允许这种访问 您不能使用Ajax/JSON在另一台服务器上访问API 例如,假设您的网页位于www.myserver.com上。您只能访问来自www.myserver.com的API。您无法访问来自twitter的API 这被称为“同一原产地政策”
解决方案是使用服务器端语言(如PHP/Python/Perl)在服务器上创建代理。只需谷歌“ajax代理”就可以找到一些解决方案。使用以下jQuery代码。它在生产中确实对我有用
$.getJSON('http://search.twitter.com/search.json?q=' + keyword + '_de&callback=?', function(json) {
alert(JSON.stringify(json));
});
您必须指定&callback=?参数,以便jQuery使用JSON。
可能只是添加&callback=?在您的示例中会有所帮助,但上面是我如何做到的。演示:
回调应该是JSONP:这是因为您没有使用数据类型:“JSONP”这是访问跨域数据时要添加的代码 下面是工作代码(我已经试过了)
$(文档)。准备就绪(
函数(){
$(“#关键字”).focus();
$(“#btnsearch”)。单击(函数(){
var关键字=$(“#关键字”).val();
如果(关键字==null | |关键字==“”)返回;
$(“#结果”).html(“”);
$.ajax({
键入:“GET”,
数据类型:“jsonp”,
contentType:“应用程序/json;字符集=utf-8”,
网址:'http://search.twitter.com/search.json',
数据:“q=”+关键字+“&rpp=50”,
成功:函数(json){
$(“#结果”).remove();
警报(“成功”);
},
错误:函数(){
警报(“无法搜索”);
}
});
});
}
);
如果向错误处理程序添加参数,则会显示错误。请阅读该错误并发布其内容。dataType:'jsonp'代码>丢失。在进行跨域调用时必须添加此项。。。请参考我的答案。谢谢,这很有效!那么,我们可以通过使用原始javascript来完成同样的任务吗?如何做到这一点呢?啊,我的意思是不用jquery,我只使用javascript。如何做到这一点:(我建议你使用Jquery,因为它效率更高。。如果你想对普通的js做同样的事情,那么你可以创建xmlhttp对象。谢谢,现在我在将数据写入文本文件方面有问题。!人们说js不能写入文件,所以我使用jsp来完成这项任务,但很难将js变量分配给jsp代码!(附言:我不允许使用PHP:()
$(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");
}
});
});
}
);