我正在尝试在我的域之外加载网页的HTML内容,我可以使用此jQuery插件提供的功能做到很好:http://www.ajax-cross-origin.com/。但是,当我打印出HTML时,缺少部分,我认为是因为ajax请求在页面完全加载之前获取HTML。当我说“缺失的部分”时,我的意思是一些应该具有innerHTML的标签实际上没有。这是我的代码:
$.ajax({
crossOrigin: true,
url: "http://siriusxm.com/bpm",
success: function(data) {
console.log(data);
},
timeout: 5000
});
crossOrigin属性来自我提到的插件。无论超时和没有超时,我都会得到相同的行为(奇怪的是,似乎超时没有做任何事情 - 当我检查控制台时,它几乎立即记录data
)。
在获取内容之前,有没有办法等到页面完全加载?对于它的价值,这是我正在开发的chrome扩展的所有部分,所以如果还有其他任何代码,你可能只需要问。
谢谢!
答案 0 :(得分:1)
因此,根据您的评论,您正在寻找的信息只是正在播放的艺术家和歌曲,您只能通过加载主页的来源才能获得。
要查找您要查找的数据,只需打开Chrome DevTools,转到网络标签,然后刷新以查看页面上的所有请求。
看起来这是您想要的请求,您只需每分钟更新一次时间戳:
http://www.siriusxm.com/metadata/pdt/en-us/json/channels/thebeat/timestamp/08-12-03:48:00
解析那个json并抓住你需要的东西。当然,他们总是可以改变文件的位置或格式,但现在就是这样。
答案 1 :(得分:0)
如果控制台日志显示您正在寻找的所有数据,那么ajax调用应该没问题。
成功回调中的任何代码都将在ajax调用之后运行,因此只需在成功回调函数中使用JQuery即可将数据插入到html中。我现在看到的只是console.log(数据),除非你删除了一些代码。
超时只是让ajax调用在“超时”之前完成设定的时间,换句话说它告诉它在设定的时间后停止等待。