1

我试图解决这个问题几个小时。我有一个wikia 网站,我想从中获取东西,但它只支持 json,甚至不支持 xml 或 jsonp。

我什么都试过了。如果我将其称为 jsonp,我的客户端会返回错误“SyntaxError: invalid label”,因为服务器根本不会将其返回为 jsonp 或 json。如果我添加“回调=?” 到 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"
});
4

2 回答 2

2

如果远程服务器不支持 JSONP 或不允许 CORS,那么您必须在服务器端反弹请求以绕过同源规则。

于 2012-11-02T12:19:34.733 回答
1

如果没有 JSONP 或 CORS,您将无法进行跨域 AJAX。

不过,您可以在后端编写一个 HTTP 代理来在后端而不是用户(= js)中进行请求。

于 2012-11-02T12:19:13.723 回答