在页面加载时,我正在制作两个AJAX请求:一个用于从Youtube频道中提取最新视频,另一个用于从博客中提取最新帖子。两个脚本都正常工作。
无论出于何种原因,我都无法在任何浏览器(Chrome,Firefox,Safari和Opera)中对其进行测试。请求太大了吗?在使用Chrome时,我一直遇到CORS支持问题(至少这是我认为的情况),因此博客请求无法在那里工作并完全抵消视频请求(它不起作用)。
以下是我在Chrome中的Javascript Dev控制台中遇到的错误:
XMLHttpRequest无法加载http://devingraham.blogspot.com/rss.xml。 Access-Control-Allow-Origin不允许使用null。
如果我改变......
var tmp = $(this).find("content:first").text();
...只是找到“标题:第一”而不是它在Safari中渲染没有冻结。如果我将其保留在内容并加载页面,我可以看到帖子加载得很好,但页面冻结并且不会加载视频。那么也许它太多了?我知道一个事实,我所拉的帖子很长,但它会导致任何问题似乎很愚蠢。所以你有什么想法吗?
这是脚本:
<script type="text/javascript" charset="utf-8">
$(function() {
$.ajax({
type: "GET",
url: "http://gdata.youtube.com/feeds/base/users/devinsupertramp/uploads?orderby=updated&alt=rss&client=ytapi-youtube-rss-redirect&v=2",
dataType: "xml",
success: parseVideo
});
$.ajax({
type: "GET",
url: "http://devingraham.blogspot.com/rss.xml",
dataType: "xml",
success: parseBlog
});
});
function parseVideo(xml) {
$(xml).find("item:first").each(
function() {
var tmp = $(this).find("link:first").text();
tmp = tmp.replace("http://www.youtube.com/watch?v=", "");
tmp = tmp.replace("&feature=youtube_gdata", "");
tmp2 = "http://www.youtube.com/embed/" + tmp + "?autoplay=1&controls=0&rel=0&showinfo=0&autohide=1";
var iframe = $("#ytplayer");
$(iframe).attr('src', tmp2);
}
);
}
function parseBlog(xml) {
$(xml).find("entry:first").each(
function() {
var tmp = $(this).find("content:first").text();
var post = $("#blog");
post.append(tmp);
}
);
}
</script>
答案 0 :(得分:2)
默认情况下,由于同源策略,您无法进行跨域AJAX请求。
您可以解决此问题,但需要cooperation of the site on the other domain明确允许此类请求。