访问.json文件以拒绝银行假期访问

时间:2013-04-17 11:32:14

标签: javascript jquery json

我对jQueryjson不熟悉。我正在尝试从以下API /链接获取UK Bank Holiday数据,以便我可以创建一个函数来确定所选日期是否为工作日。

https://www.gov.uk/bank-holidays.json

我的No Transport错误,我通过输入来修复:

jQuery.support.cors = true;

我现在正在Access Denied。我不知道如何获得这个,因为正如我所说,我仍在学习这一切。

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;
}
                                                                          });

我的问题分为两个阶段:

  1. 我如何获得访问权限? (主要问题)
  2. 如何继续访问数据?我已将json下载到我的计算机上进行查看,我将如何将其翻译为javascript,这正是我所挣扎的。

2 个答案:

答案 0 :(得分:2)

如果您被CORS阻止,并且该服务不支持JSONP,解决它的最简单方法是为实际服务创建代理服务。因此,如果您在服务器上创建服务(与提供javascript的服务相同),您可以调用该服务,而该服务又将从外部服务获取数据。在服务器端,没有担心的CORS。

我不知道你的后端是什么,但步骤如下:

  • 使用网址(例如/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
    });
}

答案 1 :(得分:1)

为此,您需要使用jsonp,如图所示here

<强> BUT

运行上面的代码会抛出一个无效的标签异常,正如here解释的那样,@ NilsH建议是由于服务器阻止了它