jquery - 带有来自api的自动完成的jquery ajax给出错误
问题描述
我正在尝试从免费 api 显示机场的自动建议(带名称的 IATA 代码)起点和目的地。当我尝试使用 dataType json 得到错误“Cross-Origin Request Blocked”并且当我使用 dataType jsonp 得到错误“SyntaxError:意外令牌:':'”时
$("#city").autocomplete({
source: function(request, response) {
$.ajax({
type: "GET",
dataType : 'jsonp',
// cache: false,
crossDomain:true,
// async:false,
contentType: "application/json; charset=utf-8",
url: "https://iatacodes.org/api/v6/autocomplete",
//headers: { 'Access-Control-Allow-Origin': '*' },
/*headers: {
'Access-Control-Allow-Origin': '*',
'Content-Type':'application/json'
},*/
data: {
api_key:"66e4db3f-e4fc-4554-b4c4-6f4d8b32ba2f",
query: request.term
},
success: function(data) {alert(data);
response(data);
}
});
},
minLength: 3,
select: function(event, ui) {
log(ui.item ?
"Selected: " + ui.item.label :
"Nothing selected, input was " + this.value);
},
open: function() {
$(this).removeClass("ui-corner-all").addClass("ui-corner-top");
},
close: function() {
$(this).removeClass("ui-corner-top").addClass("ui-corner-all");
}
});
解决方案
为了允许来自其他域的 API 请求(跨域请求被阻止),您必须在您的 api 调用中设置 'Access-Control-Allow-Origin': '*'。
推荐阅读
- revit-api - 如果我在 BIM 360 更新我的 Revit 模型,我会丢失以前注册的问题吗?
- amazon-web-services - 仅允许从 S3 存储桶的特定文件夹中删除的 IAM 策略
- amazon-web-services - 为什么当我选择 USER_SRP_AUTH 作为身份验证流类型时,AWS Amplify 会尝试使用 CUSTOM_AUTH 进行身份验证?
- python - 如何在列长度检查中忽略 NaN
- php - 为什么刷新后按钮处于活动状态?
- javascript - Wordpress 块不会在管理员中正确运行 jQuery
- legend - Amcharts 4 热火传奇 - 如何在地图下方定位
- visual-foxpro - 对象名称前的点(句点)是什么意思?
- javascript - 图表 js:在圆环图切片上添加 onclick 事件在 react-chartjs-2 中不起作用
- pandas - .sas 文件包含 var 名称,值存储在文本文件中