質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

3435閲覧

ローカルにあるjsonファイルが読み込めません。

taka_oct092018

総合スコア140

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

1クリップ

投稿2022/03/31 04:29

編集2022/03/31 07:45

以下のようなエラーメッセージが表示されます。

「クロスオリジン要求をブロックしました: 同一生成元ポリシーにより、
file:///C:(省略)/json/data.json にあるリモートリソースの読み込みは
拒否されます (理由: CORS 要求が http でない)。」

  1. FC2のサーバーにアップロードしても表示出来ませんでした。
  2. ファイルのパスの指定が間違っているのかもしれません。
  3. 検索して調べましたが、サーバーに関する知識不足なため良く分かりませんでした。

ファイルのディレクトリ構造。
idx.html
[json] --- data.json
[css] --- style.css
[js] --- app.js
--- jquery-3.6.0.min.js

[]はフォルダです。

$(function() { let tbody; tbody = $('#tbody'); // tbody要素。 // data.jsonを取って来る。 $.getJSON('../json/data.json', function(people) { // 配列内の各オブジェクトそれぞれについて処理する。 $.each(people, function(i, person) { // 変数宣言 ************************************************************** let mail, // td要素。 name, // td要素。 no, // td要素。 text_mail, // 各値を取得し、テキストを取得。 text_name, // 各値を取得し、テキストを取得。 text_no, // 各値を取得し、テキストを取得。 tr; // tr要素。 // 変数の初期化 *********************************************************** mail = $('<td>').text(text_mail); name = $('<td>').text(text_name); no = $('<td>').text(text_no); text_mail = person.mail; text_name = person.name; text_no = person.no; tr = $('<tr>'); // 実行処理 ************************************************************** // tr要素にtd要素を追加。 tr.append(no); tr.append(name); tr.append(mail); // tbodyにtr要素を追加。 tbody.append(tr); }); }); });
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>外部ファイルから表作成 - 基本形 | jQuery book demos</title> <link rel="stylesheet" href="css/style.css"> </head> <body> <h1>Ajax table</h1> <table> <thead> <tr> <th>No.</th> <th>Name</th> <th>Mail</th> </tr> </thead> <tbody id="tbody"></tbody> </table> <script src="js/jquery-3.6.0.min.js"></script> <script src="js/app.js"></script> </body> </html>
[ { "no": "0001", "name": "Taro Yamada", "mail": "example1@example.com" }, { "no": "0002", "name": "Hanako Suzuki", "mail": "example2@example.com" }, { "no": "0003", "name": "Takeshi Tanaka", "mail": "example3@example.com" } ]

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

taka_oct092018

2022/03/31 07:02

【追記】 以下のようなエラーの対処はどうすればいいのでしょうか? 「CORS ヘッダー ‘Access-Control-Allow-Origin’ が足りない)。ステータスコード: 404」
taka_oct092018

2022/03/31 07:36 編集

【追記】 CORS,json,$.getJSONの問題を解決するにはAjaxを 学んで対処すればいいのでしょうか。 お勧めの専門書がございましたら教えて下さい。
guest

回答1

0

ベストアンサー

この問題を修正するには、単純に CORS に関するリクエストを発行する際に HTTPS の URL を使用するようにしてください。
Reason: CORS request not HTTP - HTTP | MDN

 とのことです。

 この文書ですと、HTTPSとなっていますが、HTTPでも大丈夫です。


 おそらく、HTMLファイルをダブルクリックで開くなどして fileプロトコルになっているのが原因だと思います。

 ローカルにサーバを建てて、localhost などにHTTPプロトコルアクセスするか、あるいは、インターネットに公開されたWebサーバ上にアップロードして試してみてください。

投稿2022/03/31 04:54

Lhankor_Mhy

総合スコア37444

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

taka_oct092018

2022/03/31 07:00

Lhankor_Mhy様 返信ありがとうございます。 「クロスオリジン要求をブロックしました: 同一生成元ポリシーにより、https://error.fc2.com/web/404.html にあるリモートリソースの読み込みは拒否されます (理由: CORS ヘッダー ‘Access-Control-Allow-Origin’ が足りない)。ステータスコード: 404」とエラー返されました。
Lhankor_Mhy

2022/03/31 07:06

それは、FC2に上げた時のメッセージですか? 状況がよくわからないですが、404 となっていそうなので、パスが間違っている感じがします。
Lhankor_Mhy

2022/03/31 07:08 編集

というか、ご提示のコードのパスは普通に間違っていませんか。 '../json/data.json' ではなくて、'json/data.json' ですよね?
taka_oct092018

2022/03/31 07:22

Lhankor_Mhy様 返信ありがとうございます。 パスを修正して再度アップロードしてみましたが、結局同じエラーメッセージが返って来ました。
Lhankor_Mhy

2022/03/31 07:37

なるほど。 そのJSONファイルを直接表示することはできますか?
Lhankor_Mhy

2022/03/31 07:57

いえ、そうではなくて、アップロードしたサーバにあるファイルをブラウザでURLを直接打って表示させることができるか、ということをお聞きしています。
Lhankor_Mhy

2022/03/31 07:58

あるいは、アップロードしたページを直接見れれば一番話が早いのですが。
Lhankor_Mhy

2022/03/31 08:54

これ、JSONは読み込めてますよ。 CORSはファビコンのエラーみたいです。
taka_oct092018

2022/03/31 09:13

Lhankor_Mhy様 返信ありがとうございます。 そうなのですか。 私には良く分かりませんが解決方法はありますでしょうか?
Lhankor_Mhy

2022/03/31 09:17

解決法というのは、表を表示する、という意味ですか?
Lhankor_Mhy

2022/03/31 10:44

たぶん、ここがおかしいですね。 mail = $('<td>').text(text_mail); name = $('<td>').text(text_name); no = $('<td>').text(text_no); text_mail = person.mail; text_name = person.name; text_no = person.no; tr = $('<tr>'); 変数に代入する前に利用してるように見えます。
taka_oct092018

2022/04/01 14:10

Lhankor_Mhy様 何度もアドバイス本当にありがとうございます。 ご指摘の通りコードに問題があり、そこを修正した所無事に表が作成されました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問