【发布时间】:2019-05-09 17:10:05
【问题描述】:
我在 test.js 中有以下代码:
var symbol = "GOOG";
var Url = 'https://api.iextrading.com/1.0/stock/' + symbol + '/quote?filter=symbol,companyName,open,close,high,low,change,changePercent';
$.ajax({
url: Url,
type: "GET",
success: function(result){
console.log(result)
},
error: function(error) {
alert("Error received: " + error)
console.log(`Error ${error}`)
}
})
它运行良好,没有返回任何错误以及我想要的所有 JSON。但是......如果我把它放在一个回调中,例如,下面的代码,我会得到一个跨域错误。为什么会这样?
$(document).ready(function() {
$('#btn').click(function() {
const symbol = document.getElementById('symbol').value;
var Url = 'https://api.iextrading.com/1.0/stock/' + symbol + '/quote?filter=symbol,companyName,open,close,high,low,change,changePercent';
$.ajax({
url: Url,
type: "GET",
success: function(result){
console.log(result)
},
error: function(error) {
alert("Error received: " + error)
}
})
})
})
【问题讨论】:
-
你能提供 id='symbol' 的 HTML 吗?我刚刚在 JSFiddle 上对其进行了测试,它可以工作。 Click here to test it。我得到了结果
Object { symbol: "GOOG", companyName: "Alphabet Inc.", open: 1061.75, close: 1036.58, high: 1075.26, low: 1028.5, change: -32.15, changePercent: -0.03008 } -
浏览器在 devtools 控制台中记录的确切错误消息是什么?
-
跨源请求被阻止:同源策略不允许读取位于api.iextrading.com/1.0/stock/GOOG/… 的远程资源。 (原因:CORS 请求未成功)。[了解更多]
-
我无法重现该问题:jsfiddle.net/barmar/de753vtL/3 它适用于我的回调。
-
@MaryB。您使用的是哪个浏览器(和版本)?此外,值得尝试禁用所有浏览器插件/扩展,然后查看它是否有效。
标签: javascript callback cors xmlhttprequest cross-domain