Ajax在完全处理后读取HTML

时间:2014-08-12 02:57:31

标签: javascript jquery ajax

我正在尝试在我的域之外加载网页的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扩展的所有部分,所以如果还有其他任何代码,你可能只需要问。

谢谢!

2 个答案:

答案 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调用在“超时”之前完成设定的时间,换句话说它告诉它在设定的时间后停止等待。