Javascript Firefox CORS与JSON的问题
我正在尝试使用来自的API。(密钥是免费的,可以很容易地更改,因此我将包括它,因为没有它,您甚至无法测试它们的功能) 现在,当我的JavaScript托管在本地时,它在FF中运行良好,但在GitHub页面上运行不好 这里有一个不起作用的函数。错误是: 网络错误:发生网络错误 …它似乎发生在Javascript Firefox CORS与JSON的问题,javascript,json,cors,Javascript,Json,Cors,我正在尝试使用来自的API。(密钥是免费的,可以很容易地更改,因此我将包括它,因为没有它,您甚至无法测试它们的功能) 现在,当我的JavaScript托管在本地时,它在FF中运行良好,但在GitHub页面上运行不好 这里有一个不起作用的函数。错误是: 网络错误:发生网络错误 …它似乎发生在bhttp.send()之后 函数getMovieDetails(){ var reqURL=”https://api.themoviedb.org/3/movie/latest?api_key=afe4e1
bhttp.send()之后代码>
函数getMovieDetails(){
var reqURL=”https://api.themoviedb.org/3/movie/latest?api_key=afe4e10abbb804e2b4a4f8a3ef067ad5&language=en-美国”;
var bhttp=新的XMLHttpRequest();
必和必拓打开(“获取”,请求URL,错误);
setRequestHeader(“内容类型”、“json”);
bhttp.send();
var response=JSON.parse(bhttp.responseText);
var str=JSON.stringify(响应,null,2);
返回响应;
}
log(getMovieDetails())代码>我不是firefox用户,所以您需要对此进行测试。但是,如果异步阻塞理论是正确的,这应该是可行的
我将其修改为使用一个简单的回调,就我个人而言,我不会使用回调,但会做出承诺,但这是另一个问题:)
函数getMovieDetails(回调){
var reqURL=”https://api.themoviedb.org/3/movie/latest?api_key=afe4e10abbb804e2b4a4f8a3ef067ad5&language=en-美国”;
var bhttp=新的XMLHttpRequest();
必和必拓打开(“获取”,请求URL,真);
setRequestHeader(“内容类型”、“json”);
bhttp.onload=函数(){
如果(bhttp.readyState==4){
如果(bhttp.status==200){
回调(JSON.parse(bhtp.responseText));
}否则{
控制台错误(bhttp.statusText);
}
}
};
bhttp.send();
}
getMovieDetails(函数(电影){
console.log(电影);
});代码>我不是firefox用户,所以您需要对此进行测试。但是,如果异步阻塞理论是正确的,这应该是可行的
我将其修改为使用一个简单的回调,就我个人而言,我不会使用回调,但会做出承诺,但这是另一个问题:)
函数getMovieDetails(回调){
var reqURL=”https://api.themoviedb.org/3/movie/latest?api_key=afe4e10abbb804e2b4a4f8a3ef067ad5&language=en-美国”;
var bhttp=新的XMLHttpRequest();
必和必拓打开(“获取”,请求URL,真);
setRequestHeader(“内容类型”、“json”);
bhttp.onload=函数(){
如果(bhttp.readyState==4){
如果(bhttp.status==200){
回调(JSON.parse(bhtp.responseText));
}否则{
控制台错误(bhttp.statusText);
}
}
};
bhttp.send();
}
getMovieDetails(函数(电影){
console.log(电影);
});代码>好的,看起来Kittle是正确的,问题是firefox插件隐私獾阻止了API。我现在觉得自己很蠢,但至少我的代码现在很干净。好吧,看起来Kirtle是正确的,问题是firefox插件隐私獾阻止了API。我现在觉得自己很愚蠢,但至少我的代码现在很干净。这里只是一个暗中操作,但是使用同步请求是不好的,而且不受鼓励,所以我想知道FF是否阻止了它。这显示在控制台中,但由于它在本地工作,我认为它也可以在主机上工作。有什么办法可以让它更好呢?发现这个->注意:从Gecko 30.0(Firefox 30.0/Thunderbird 30.0/SeaMonkey 2.27)开始,由于对用户体验的负面影响,主线程上的同步请求已被弃用。
所以我假设如果您将代码更改为异步,您应该可以继续。链接->顺便说一句,GitHub页面支持CORS
是不相关的-代码中的问题是,api.themoviedb.org
是否发送CORS标题?答:这只是一个暗中操作,但是使用同步请求是不好的,不鼓励使用,所以我想知道FF是否阻止了它。Y这显示在控制台中,但由于它在本地工作,我认为它也可以在主机上工作。有什么办法可以让它更好呢?发现这个->注意:从Gecko 30.0(Firefox 30.0/Thunderbird 30.0/SeaMonkey 2.27)开始,由于对用户体验的负面影响,主线程上的同步请求已被弃用。
所以我假设如果您将代码更改为异步,您应该可以继续。链接->顺便说一句,GitHub页面支持CORS
是不相关的-代码中的问题是,api.themoviedb.org
是否发送CORS标题?答:这看起来确实是一个同步/异步问题,我对webdev的工作还是新手,所以我真的不知道有多少最佳实践,但我不相信这是一个同步/异步问题。我尝试使用Firefox和GitHub页面的原始同步代码,一切都很好。我尝试过的一件事确实导致了最初的错误,那就是使用了无效的api_密钥
,这让我怀疑这是否只是JS缓存问题?很可能是其他问题,但弃用的标记无论如何都是一个很好的理由。看起来这确实是一个同步/异步问题,我还不熟悉webdev的工作,所以我不太了解yetGlad的最佳实践,这是固定的,但我不相信这是一个同步/异步问题。我尝试使用Firefox和GitHub页面的原始同步代码,一切都很好。我尝试过的一件事确实导致了最初的错误,那就是使用了无效的api_键
,这让我怀疑这是否只是JS缓存问题?这很可能是其他原因,但不推荐的
标记无论如何都是远离的好理由。