2

私は と に非常に慣れていませjQueryjson。選択した日付が営業日かどうかを判断する関数を作成できるように、次の API/リンクから英国のバンク ホリデー データを取得しようとしています。

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

私の質問は2つの段階にあります:

  1. どうすればアクセスできますか? (主な質問)
  2. データにアクセスするにはどうすればよいですか? jsonをコンピューターにダウンロードして見ましたが、これをjavascriptどのように翻訳するかが私が苦労していることです.
4

2 に答える 2

2

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
    });
}
于 2013-04-17T11:51:33.160 に答える
1

これを機能させるには、ここに示すように jsonp を使用する必要があります

しかし

上記のコードを実行すると、無効なラベルの例外がスローされます。これは、ここで説明されているように、@NilsH が示唆するように、サーバーがブロックしているためです。

于 2013-04-17T11:44:26.673 に答える