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