我对 jQuery
和 json
非常陌生。我正在尝试从以下 API/链接获取英国银行假日数据,以便我可以创建一个函数来确定所选日期是否为工作日。
https://www.gov.uk/bank-holidays.json
我遇到了No Transport
错误,我通过输入以下内容修复了该错误:
jQuery.support.cors = true;
我现在收到访问被拒绝
的消息。我不知道如何访问此内容,因为正如我所说,我仍在学习这一切。
function IsWorkingDay(date) {
var day = new moment(value, "DD-MM-YYYY").day();
jQuery.support.cors = true;
var bankHolidays = $.getJSON("https://www.gov.uk/bank-holidays.json").done(function(data) {
alert(data);
})
.fail(function(a, b, c) {
alert(b + ',' + c);
return day != 0 && day != 6;
}
});
我的问题分两个阶段:
- 我如何获得访问权限? (主要问题)
- 我如何继续访问数据?我已将
json
下载到我的计算机上查看,我正在努力解决如何将其转换为javascript
的问题。
最佳答案
如果您被 CORS 阻止,并且该服务不支持 JSONP,解决该问题的最简单方法是为实际服务创建代理服务。因此,如果您在服务器上创建一个服务(与提供 JavaScript 的服务相同),您可以调用该服务,该服务又将从外部服务获取数据。在服务器端,无需担心 CORS。
我不知道你的后端是什么,但步骤如下:
- 在您这边创建一个通过 URL 公开的服务(例如
/myapp/workingday
) - 调用此服务而不是真正的服务
- 您的代理服务将获取 JSON 数据并将其返回给 JavaScript
编辑
我不了解MVC4,但我怀疑它与Spring MVC有一些相同的概念,所以这里有一个Java示例:
@Controller
public class HolidaysController {
@RequestMapping("/workingday")
public void isworkingDay(@RequestParam("day") Date day, HttpServletResponse response) {
// Call external service and get JSON
String json = callExternalService(day);
response.setContentType("application/json");
response.getWriter().write(json);
}
}
在你的 JavaScript 中:
function IsWorkingDay(date) {
var day = new moment(value, "DD-MM-YYYY").day();
var bankHolidays = $.getJSON("/workingday").done(function(data) {
// process data
});
}
关于javascript - 访问 .json 文件导致银行假期访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16058905/