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

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

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

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

jQuery

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

808閲覧

javascript ajaxを使用したサイト内検索を実装したい。

ema-material

総合スコア29

JavaScript

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

jQuery

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2020/03/23 06:40

表題の件で手詰まりとなりご相談したいです。
どうぞよろしくお願いします。

#W#検索窓設置側 index.htmlをはじめとした全ページのヘッダー

html

1<li id="wrap_search"> 2 <form action="search-result/result.html" autocomplete="on" method="get"> 3 <input id="search-input" placeholder="サイト内検索" type="text" name="search-key" > 4<input id="search-buttom" class="" type="submit" value=""> 5 </form> 6 </li>

##検索結果吐き出し側 /search-result/result.html

html

1<section class="result_contents"> 2 <h2>検索結果</h2> 3 <ul id="result_wrapper"> 4 <li></li> 5 </ul> 6 </section>

javascript

1<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> 2 3<script> 4 let v = new URLSearchParams(window.location.search); 5 v = v.get('search-key'); 6 7 const urlLists = [ 8 "/fujisawa_international_university/", 9 "/about/select/", 10 "/about/access/", 11 "/contact/" 12 ]; 13 $.each(urlLists, function(i){ 14 $.ajax({ 15 url : urlLists[i], 16 dataType : 'html', 17 success : function(data){ 18 if( $(data).find(".article").text().indexOf(v) !== -1){ 19 $('<li><a href="' + urlLists[i] + '">' +$(data).find("h2").text() + '</a></li>').appendTo('ul'); 20 } 21 }, 22 error: function(data){ 23 console.log("error") 24 } 25 }); 26 }); 27 </script>

検索させたい語句を持つ
"/fujisawa_international_university/",
"/about/select/",
"/about/access/",
"/contact/"
内のsectionやdivなどにclass="article"をつけています。

##現在の現象
result.html側の開発者ツール「コンソールログ」にて

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

という記載が
"/fujisawa_international_university/",
"/about/select/",
"/about/access/",
"/contact/"
上記検索先フォルダー4つ全てに対してエラーとして現れます。
なお、上記フォルダー設置先urlはhttpsではありません。

上記解決策として


この場合は、サーバーサイドから返却されるHTTPレスポンスヘッダーにAccess-Control-Allow-Originを設定してあげましょう。


という記事を見つけたので、試してみたいのですが、この場合どこに記述するべきなんでしょうか?
また、他にスマートな解決策はありますでしょうか?

現在テストしている環境はXAMPPです。

どうぞよろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

現在テストしている環境はXAMPPです。

でしたらfile:/ではなく全てhttp://でアクセスしましょう。
正しくアクセスできればそれで解消できるはず。

投稿2020/03/23 06:47

編集2020/03/23 06:48
m.ts10806

総合スコア80850

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

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

m.ts10806

2020/03/23 06:56

でも作り次第では/が一個不要かもしれない
ema-material

2020/03/23 06:58

早速の回答ありがとうございます。 御指南いただいた絶対パスの記述、http://ですが、 質問する前にも念のためと思ってやってみましたがダメでした。 今も念のためにやってみたのですが、 コンソールログで --------------------------------------- クロスオリジン要求をブロックしました: 同一生成元ポリシーにより、http://localhost/fujisawa_international_university/index.html にあるリモートリソースの読み込みは拒否されます (理由: CORS ヘッダー ‘Access-Control-Allow-Origin’ が足りない)。 ------------------------------------ となります。
ema-material

2020/03/23 07:03

相対パスの考え方でしたら /search-result/は /fujisawa_international_university/ の下でして、他のフォルダー /about/ /contact/と同列になります。
m.ts10806

2020/03/23 07:04

サーバーサイドのプログラムがあればそこでheader送信。 なければ.htaccessで行います。
m.ts10806

2020/03/23 07:06

>相対パスの考え方でしたら / で始まってるとルートからの絶対パスになりますし、fileのときのように///と本来2つのところが3つになります。
ema-material

2020/03/23 07:43

ありがとうございます。 先ほど絶対パスにした時にはエラーが出ていたのですが、その後エラーが消えました。 そして検索結果がresult.htmlに吐き出されるようになりました! デザインが盛大に崩れ始めたので、クラス名をつけてjavascriptを打ち直しています。 クラス名をつけてjsに指示をすると検索結果が吐き出されなくなったりしますが、 現在そのバグを潰すべく頑張っています。ありがとうございました!
m.ts10806

2020/03/23 12:48 編集

ちょこちょこ直すより部品にわけて個別に作った方が問題切り分けができると思います。がんばってください。
ema-material

2020/03/23 23:42

はい。あのあとおかけ様で無事実装できました。ありがとうございました。
m.ts10806

2020/03/23 23:44

解決されたようで何よりです
ema-material

2020/03/25 00:41 編集

先ほど、エラー状態を書き込んだのですが、解決しましたので、編集にて削除しました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問