XMLHTTPRequest Error: Synchronous XMLHttpRequest on the main thread is deprecated ... (SoundCloud API)
XMLHTTPRequest Error: Synchronous XMLHttpRequest on the main thread is deprecated ... (SoundCloud API)
我正在使用 XMLHttpRequest 访问 SoundClouds 热门曲目 (https://api-v2.soundcloud.com/charts?kind=trending&genre=soundcloud:genres:all-music&client_id=1dff55bf515582dc759594dac5ba46e9&q=)。我什至不能用它来解析和所有有趣的东西,因为我的控制台记录了这个错误:
Synchronous XMLHttpRequest on the main thread is deprecated because of
its detrimental effects to the end user's experience. For more help
http://xhr.spec.whatwg.org/
我花了一些时间寻找答案 - 据我所知 - 问题是 javascript 在请求 中。所以我查看了 SoundCloud API 并在每首曲目的属性中发现了这一点:
... "waveform_url":"https://wis.sndcdn.com/2AVcYzUmENai_m.json" ...
所以我发现的所有类似问题的解决方案都行不通,因为我无法更改它们 API 的工作方式。也许我做的事情完全错了,你们可以帮忙。
这是导致问题的完整函数(我认为):
function initialSearch() {
var xhr = new XMLHttpRequest();
xhr.open('GET', "https://api-v2.soundcloud.com/charts?kind=trending&genre=soundcloud:genres:all-music&client_id=1dff55bf515582dc759594dac5ba46e9&q=", false);
xhr.addEventListener("load", function() {
initialArray = JSON.parse(xhr.response);
}, false);
}
如果它有任何变化,我会在 "DOMContentLoaded" 上调用它。
也许你能帮我。谢谢
您使用的 XMLHttpRequest 有误。做异步请求而不是同步。这是固定版本:
function initialSearch() {
var xhr = new XMLHttpRequest();
xhr.addEventListener("load", function() {
initialArray = JSON.parse(xhr.response);
}, false);
xhr.open('GET', "https://api-v2.soundcloud.com/charts?kind=trending&genre=soundcloud:genres:all-music&client_id=1dff55bf515582dc759594dac5ba46e9&q=");
xhr.send();
}
但即便如此,您仍会收到 No 'Access-Control-Allow-Origin' header is present on the requested resource
错误。这是 CORS 浏览器策略错误。只能请求同源资源。
因此,如果您可以修改您的服务器代码,请从您的服务器执行该请求并更改您的客户端 AJAX 请求以从您的服务器请求数据。
我正在使用 XMLHttpRequest 访问 SoundClouds 热门曲目 (https://api-v2.soundcloud.com/charts?kind=trending&genre=soundcloud:genres:all-music&client_id=1dff55bf515582dc759594dac5ba46e9&q=)。我什至不能用它来解析和所有有趣的东西,因为我的控制台记录了这个错误:
Synchronous XMLHttpRequest on the main thread is deprecated because of
its detrimental effects to the end user's experience. For more help
http://xhr.spec.whatwg.org/
我花了一些时间寻找答案 - 据我所知 - 问题是 javascript 在请求 中。所以我查看了 SoundCloud API 并在每首曲目的属性中发现了这一点:
... "waveform_url":"https://wis.sndcdn.com/2AVcYzUmENai_m.json" ...
所以我发现的所有类似问题的解决方案都行不通,因为我无法更改它们 API 的工作方式。也许我做的事情完全错了,你们可以帮忙。
这是导致问题的完整函数(我认为):
function initialSearch() {
var xhr = new XMLHttpRequest();
xhr.open('GET', "https://api-v2.soundcloud.com/charts?kind=trending&genre=soundcloud:genres:all-music&client_id=1dff55bf515582dc759594dac5ba46e9&q=", false);
xhr.addEventListener("load", function() {
initialArray = JSON.parse(xhr.response);
}, false);
}
如果它有任何变化,我会在 "DOMContentLoaded" 上调用它。
也许你能帮我。谢谢
您使用的 XMLHttpRequest 有误。做异步请求而不是同步。这是固定版本:
function initialSearch() {
var xhr = new XMLHttpRequest();
xhr.addEventListener("load", function() {
initialArray = JSON.parse(xhr.response);
}, false);
xhr.open('GET', "https://api-v2.soundcloud.com/charts?kind=trending&genre=soundcloud:genres:all-music&client_id=1dff55bf515582dc759594dac5ba46e9&q=");
xhr.send();
}
但即便如此,您仍会收到 No 'Access-Control-Allow-Origin' header is present on the requested resource
错误。这是 CORS 浏览器策略错误。只能请求同源资源。
因此,如果您可以修改您的服务器代码,请从您的服务器执行该请求并更改您的客户端 AJAX 请求以从您的服务器请求数据。