Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取音频src url状态JS_Javascript_Jquery_Html5 Audio_Soundcloud - Fatal编程技术网

Javascript 获取音频src url状态JS

Javascript 获取音频src url状态JS,javascript,jquery,html5-audio,soundcloud,Javascript,Jquery,Html5 Audio,Soundcloud,我正在从Soundcloud API将音频流传输到我的播放器 <audio></aidio> <source src="soundcloud-track-url"></source> 已到达 所以我的逻辑是:如果我在src负载上得到一个错误,我想进一步拆分,如果这是因为“限制”-这样做,如果不是因为“限制”-这样做 如果达到每天的限制,Soundcloud API将返回HTTP 429响应代码“太多请求” 如何利用“HTTP 429”信息获得预期

我正在从Soundcloud API将音频流传输到我的播放器

<audio></aidio>
<source src="soundcloud-track-url"></source>
已到达

所以我的逻辑是:
如果我在src负载上得到一个错误,我想进一步拆分,
如果这是因为“限制”-这样做,
如果不是因为“限制”-这样做

如果达到每天的限制,Soundcloud API将返回HTTP 429响应代码“太多请求”


如何利用“HTTP 429”信息获得预期结果?

由于您在问题中没有提供任何线索,我猜您正在使用AJAX与SoundCloud通信

鉴于此,您需要在
xhr
(XMLHttpRequest)对象上检查
status
属性


更新:由于一开始使用了错误的方法,我建议您阅读人们的had,看看他们是如何解决的。

您需要将类似
事件的属性传递给错误处理程序,然后获取其
target
属性,该属性指向引发错误的HTML元素

一旦拥有了元素本身,就可以使用
.getAttribute('src')
轻松获取其src属性

一旦拥有src属性,就可以
获取该属性并检查该请求的错误状态

document.getElementById("mySource").onerror = event => {
    var sourceElement = event.target;
    var audioURL = sourceElement.getAttribute("src");

    fetch(audioURL).then(function(response) {
        alert(response.status);
    });
};
下面是关于如何工作的沙箱:


您能分享一些代码吗?您如何使用该API?你的
if
语句在哪里?在onerror eventListener@mrReihaYou开玩笑的内部,对吗?我的意思是告诉我它们在哪里?我只是从那个API流式传输,而不是使用它们本身@mrreihaz实际上,不,与Soundcloud通信的唯一部分是源标记(scr)内的url,我这边没有涉及JS或其他人@mrReiha@AndrewK无法从JavaScript中的
audio
标记发出的请求中获取HTTP状态。要做到这一点,唯一的方法是使用来自JS的AJAX(或fetch)调用来获取请求的状态代码。您可以将其作为一个答案发布吗?因此,在出现错误的情况下,
onerror eventlistener函数
从标记中获取src url,并通过JS到http429检查它是否匹配@mrReiha@AndrewK我告诉你,你必须设置一个Ajax调用,并使用它从声音云获取音频。我已经用一个类似问题的链接更新了我的答案。
document.getElementById("mySource").onerror = event => {
    var sourceElement = event.target;
    var audioURL = sourceElement.getAttribute("src");

    fetch(audioURL).then(function(response) {
        alert(response.status);
    });
};