我试图解决这个问题几个小时了。 我得到了一个wikia web我希望得到的东西,但它只支持json,甚至不支持xml或jsonp。
我尝试了一切。如果我将其称为jsonp,我的客户端返回错误“SyntaxError:invalid label”导致服务器根本不将其作为jsonp或json返回。 如果我添加“callback =?”到url并将其保留为json,返回相同的错误。
这是我的代码的一部分(我修改了太多次,到目前为止没有任何工作)
$('#searchBox').keydown(function() {
$.ajax({
type: "GET",
url: "http://leagueoflegends.wikia.com/index.php?callback=?",
data: {
action: "ajax",
rs: "getLinkSuggest",
format: "json",
query: "jungl"
},
success: function(json){
alert("Success");
},
error: function(){
alert("Error");
},
dataType: "json"
});
});
更新 这是我的解决方案,它有效: (使用YQL)
var url = "http://leagueoflegends.wikia.com/index.php?action=ajax&rs=getLinkSuggest&format=json&query=jung"
url = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from html where url="' + url + '"') + '&format=xml';
$.ajax({
type: "GET",
url: url,
success: function(text){
text = text.split("<p>")[1].split("</p>")[0];
alert(text);
},
error: function(){
alert("Error");
},
dataType: "text"
});
答案 0 :(得分:2)
如果远程服务器不支持JSONP或允许CORS,那么您必须退回请求服务器端以绕过同源规则。
答案 1 :(得分:1)
如果没有JSONP或CORS,你不能做跨域AJAX。
尽管如此,您可以在后端编写HTTP代理以在后端而不是用户(= js)中执行请求。