Javascript 使用YQL的JQuery跨域请求

Javascript 使用YQL的JQuery跨域请求,javascript,jquery,cross-domain,yql,Javascript,Jquery,Cross Domain,Yql,所以我需要发出一个跨域请求,其中响应不是JSON格式的,所以我不能使用.getJSON。get显然不起作用,因为它是一个跨域请求 我在谷歌搜索时遇到了这个(),它似乎适合我想做的事情(即使用jquery插件进行非json格式的跨域调用)。我的代码如下所示。我知道url工作正常,因为如果我将其粘贴到浏览器中,我可以看到响应,根据last.fm文档 服务器响应的主体 包含一系列\n(ASCII 10) 端接线路。典型的成功者 服务器响应类似于 这: 所以我知道我的网址是好的。现在我想知道我是如何得到

所以我需要发出一个跨域请求,其中响应不是JSON格式的,所以我不能使用.getJSON。get显然不起作用,因为它是一个跨域请求

我在谷歌搜索时遇到了这个(),它似乎适合我想做的事情(即使用jquery插件进行非json格式的跨域调用)。我的代码如下所示。我知道url工作正常,因为如果我将其粘贴到浏览器中,我可以看到响应,根据last.fm文档

服务器响应的主体 包含一系列\n(ASCII 10) 端接线路。典型的成功者 服务器响应类似于 这:

所以我知道我的网址是好的。现在我想知道我是如何得到这些信息的,以及为什么我对他们示例的版本不起作用

function performHandshake(sk, token, ts){

    var token = md5(apiSecret + ts);
    var urlToUse = "http://post.audioscrobbler.com/?hs=true&p=1.2.1&c=tst&v=1.0&u=chamals&t=" + ts + "&a=" + token + "&api_key=" + apiKey + "&sk=" + sk + "&format=xml&callback=cbfunc";
            $('#container').load(urlToUse);
    $.ajax({
        url: urlToUse,
        type: 'GET',
        success: function(res){
            var headline = $(res.responseText).find('a.tst').text();
            window.console.log(headline);   
        }   
    });

}

是的,跨浏览器脚本。您不能使用AJAX,因为它违反了相同的域策略

您必须在运行JavaScript的同一台服务器上设置代理

编辑外观,就像您需要
$(“#容器”).load(url)
位那样,这样才能工作


返回并重新仔细阅读链接文章。

您需要使用而不是
$.ajax()
来返回跨站点信息。

var res实际上包含了我需要的信息。我猜他们的标题=部分是专门为他们的实施


感谢那些帮助过我的人

您链接的页面谈到了使用YQL和jQuery。这是一个非常有趣的解决方案。然而,您的示例似乎跳过了YQL部分(这是至关重要的)

然后,您必须将调用新URL作为JSONP请求调用

$.getJSON(yqlUrl2Use, function(json){
    // figure out the format of the answer here...   
});

很抱歉,我刚才提到的页面链接断开了,但现在它已修复,这是错误的Byron。您可以跨域执行ajax请求,但只能使用
$.getJSON()
@HurnsMobile,我更新了我的答案以使其更清晰
$.json
实际上只是动态地执行一些
操作并返回结果。url应该在.load中是什么?我的网址?我真的没法理解,因为他们只是放了谷歌。我试着输入我的url,但仍然不起作用。这对简单的字符串不起作用。从您的链接文章中:
重要提示:从jQuery 1.4开始,如果JSON文件包含语法错误,请求通常会以静默方式失败。
我认为$.getJSON仅在请求以JSON格式返回时有效,而我的请求不是
var urlToUse = "http://post.audioscrobbler.com/?hs=true&p=1.2.1&c=tst&v=1.0&u=chamals&t=" + ts + "&a=" + token + "&api_key=" + apiKey + "&sk=" + sk + "&format=xml&callback=cbfunc";

var yqlUrl2Use = "http://query.yahooapis.com/v1/public/yql?"+
            "q=select%20*%20from%20html%20where%20url%3D%22"+
            encodeURIComponent(urlToUse)+
            "%22&format=xml'&callback=?"
    // this function gets the data from the successful 
    // JSON-P call
$.getJSON(yqlUrl2Use, function(json){
    // figure out the format of the answer here...   
});