[英]Cross-domain requests with JQuery using YQL
因此,我需要發出一個跨域請求,其中的響應不是JSON格式的,因此我不能使用.getJSON。 .get顯然不起作用,因為它是跨域請求。
我在谷歌搜索時遇到了這個問題( 閱讀本文 ),看來它應該可以實現我想做的事情(這是一個跨域調用,它不是使用jquery插件進行json格式化的)。 我的代碼如下所示。 我知道url可以正常工作,因為如果將其粘貼到瀏覽器中,我可以看到響應,根據last.fm文檔
服務器響應的主體由一系列\\ n(ASCII 10)終止的行組成。 典型的成功服務器響應如下所示:
OK
17E61E13454CDD8B68E8D7DEEEDF6170
http://post.audioscrobbler.com:80/np_1.2
http://post2.audioscrobbler.com:80/protocol_1.2
所以我知道我的網址很好。 現在,我想知道如何獲得這些信息,以及為什么我的示例版本不起作用。
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的服務器上設置代理。
編輯看起來您需要$('#container').load(url)
位才能正常工作。
返回並仔細閱讀鏈接文章。
好吧,您鏈接的頁面談到了使用YQL和jQuery。 這是一個非常有趣的解決方案。 但是,您的示例似乎跳過了YQL部分(這一點至關重要)。
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
然后,您必須將調用新的URL作為JSONP請求調用。
$.getJSON(yqlUrl2Use, function(json){
// figure out the format of the answer here...
});
您需要使用$.getJSON
而不是$.ajax()
來返回跨站點信息。
var res實際上擁有我需要的信息。 我猜他們的標題=部分專門針對其實現。
感謝那些幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.