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

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

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

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

JavaScript

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

jQuery

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

Ajax

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

Q&A

解決済

2回答

1381閲覧

ajaxで読み込んだ複数ページのURLをhrefに代入したい

lottttaaaa

総合スコア1

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

JavaScript

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

jQuery

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

Ajax

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

0グッド

0クリップ

投稿2020/05/21 12:14

前提・実現したいこと

ajaxで複数ページをよみこんで、リンクつきページリストを作成したい。
作りたいイメージ

test.html <ul class="content"> <li><a href="AA.html">Aのショップ名</a></li> <li><a href="BB.html">Bのショップ名</a></li> <li><a href="CC.html">Cのショップ名</a></li> </ul>

ajaxには詳しくなくて、いろいろ試してみているのですがうまくいきません。

発生している問題

ページを読み込んでいる先のURLができず、実装しているページのurlが表示されてしまいます。

test.html <ul class="content"> <li><a href="http://○○○/test.html">Aのショップ名</a></li> <li><a href="http://○○○/test.html">Bのショップ名</a></li> <li><a href="http://○○○/test.html">Cのショップ名</a></li> </ul>

該当のソースコード

$(document).ready(function () { // URLを指定 var urls= ['AA.html','BB.html','CC.html']; for ( var x =0; x < urls.length; ++x ){ $.ajax({ url: urls[x], dataType: 'html', success: function(html) { // 成功した場合 var blog_entries = ''; //名前を変数に代入 var shop_name = $(html).find('.shopName').text(); //表示用のレイアウトを作成 blog_entries = $('<li><a href="'+ url +'">' + shop_name +'</a></li>'); $('ul.content').append(blog_entries); }, error: function() { //エラー表示 $('ul.content').append('<li>読み込みが出来ませんでした。</li>'); } }); } });

読み込んでいる先のページ(AA.htmlなど)で、document.URLで取得したページURLを出力して、それを取得することも試してみたのですが、何も取得できませんでした。
何卒よろしくご教示ください。

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

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

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

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

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

guest

回答2

0

ベストアンサー

<a> には "AA.html" 等を与えたい、ということだと思います。

blog_entries = $('<li><a href="'+ url +'">' + shop_name +'</a></li>'); とありますが、ここで参照される url という変数がどこにも宣言されていません。
それでなぜ test.html が入るのかは謎ですが、 urls[x]url にバインドする必要はあるはずです。

ちなみにご提示のコードでハマりがちな罠として、「var で宣言されたループ変数をその内部で(非同期に)使う場合、ループが終わった後に参照することになるので常に最後の数字になる」というのがあります。
かつては

javascript

1var lis = document.getElementsByTagName('li'); 2 3for (var i = 0, len = lis.length; i < len; ++i) { 4 // ここからクロージャ 5 (function (n) { 6 lis[n].onclick = function () { 7 console.log(n); 8 }; 9 }(i)); 10 // ここまで 11}

のようにクロージャを作るみたいな周りくどいハックを使ったりもしましたが、今は let const で容易に回避できるので、 var は使わない方がよいです。

投稿2020/05/21 12:55

htsign

総合スコア870

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

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

lottttaaaa

2020/05/22 00:46

ありがとうございます。varを使わない方法に変更してみます。
guest

0

ajaxで複数ページをよみこんで、リンクつきページリストを作成したい。

との事ですが、

ajaxは通信により
・ サーブレットその他Webサーバ側の機能を呼び出し応答を取得する(読み込む)。
・ 別のページ(HTML)内容自体を呼び出し応答を取得する(読み込む)。
・ JSONファイルなどを呼び出し応答を取得する(読み込む)。
などを行うクライアントサイドの機能となります。

あなたが「複数ページをよみこんで」と言っているのは、
上記どのイメージになるのでしょうか?
何を読み込む予定なのでしょうか?

そのあたりが分からなければ、各回答者の方も
回答出来ないかと思います。

以上、よろしくお願いします。

投稿2020/05/21 12:38

massive003

総合スコア70

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

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

lottttaaaa

2020/05/22 00:53

ありがとうございます。きちんと説明ができておらずすみません。 >別のページ(HTML)内容自体を呼び出し応答を取得する(読み込む)。 こちらのイメージでした。 回答を参考に、修正してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問