![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
javascript の初心者です。
HP上のfaqページで,質問事項が箇条書きされていて,どれかひとつをクリックすると,その下に回答が表示されるようにしたいと考えています。
ここまではどうにかできたのですが,ファイルの大きさや後の管理のことを考えて,回答はそれぞれ別のhtmlファイルにして,質問をクリックするとそのhtmlファイルを読み込んで表示したいのですがどのようにすればいいのでしょうか?
prototype.jsやjQueryなどのAjaxライブラリを使ったことはありませんので,もしつかうのならばできれば詳しく教えて下さい。
No.5ベストアンサー
- 回答日時:
No.4のサンプルはちょっと酷いですね。
参考にもならないかも。すみません。
jQueryでAjaxを利用する基本チュートリアル
http://ascii.jp/elem/000/000/458/458236/
提示した記事をしっかり読めば、こんなミスはしないはず。
上手くやって下さい。
ありがとうございます。
少しわかってきた気がします。
ただ,Ajaxは文字コードがUTF-8しか使えないとのことですが,これを使いたいHPは文字コードがEUC-jpなので,文字化けしてしまいます。
これを回避する方法はありますか?
もしご存知でしたら教えて下さい。
よろしくお願します。
No.6
- 回答日時:
>ただ,Ajaxは文字コードがUTF-8しか使えないとのことですが,これを使いたいHPは文字コードがEUC->jpなので,文字化けしてしまいます。
>これを回避する方法はありますか?
jQuery などのライブラリで ajax関連の機能を使う場合、基本読み込み対象のページは utf-8 である必要があります。utf-8 でない場合は iframe ベースの ajax を使用することで回避できるかと思います。
こちら↓の記事の終わりの方に、$.fn.iframeAjax というメソッドの定義があるので、これを事前に定義しておき..
http://d.hatena.ne.jp/cyokodog/20090616/iframe01
html に 取得したコンテンツを格納する div 要素を以下のように書いておき..
<div id="result"></div>
下記処理を実行すればできるかと思いますが、いかかでしょう?
jQuery(function($){
var dummy = $('<a href="読み込みたいhtml">dummy</a>').appendTo('body');
dummy.iframeAjax(function(doc){
$('#result').html(doc.find('body').html());
});
setTimeout(function(){
dummy.click();
setTimeout(function(){
dummy.remove();
},100);
},0);
});
ちなみに私の会社でも諸事情で Shift_JISベースのhtmlしか使えない環境があるので、上記の方法と同様の原理のプラグインを作って ajax を実現させています(IE8でも動いてます)
参考URL:http://d.hatena.ne.jp/cyokodog/20090616/iframe01
No.4
- 回答日時:
Ajax関連記事を参考に書いた簡単なサンプルです。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<title>Ajax sample</title>
<script type="text/javascript" src="jquery-1.3.2.js"></script>
<script type="text/javascript">
$(function(){
$("#question1 button").click(function(){
$("#p1").load("answer1.html p").css('visibility', 'visible');
});
$('#question2 button').click(function(){
$('#p2').load('answer2.html p').css('visibility', 'visible');
});
$('#question3 button').click(function(){
$('#p3').load('answer3.html p').css('visibility', 'visible');
});
});
document.write('<style type="text/css">'
+ '.answer { visibility: hidden; }'
+ 'div button { visibility: visible; }'
+ '</style>');
</script>
<style type="text/css">
button { visibility: hidden; }
</style>
</head>
<body>
<div id="question1">question1... <button>回答</button></div>
<p id="p1" class="answer"><a href="answer1.html">回答1</a></p>
<div id="question2">question2... <button>回答</button></div>
<p id="p2" class="answer"><a href="answer2.html">回答2</a></p>
<div id="question3">question3... <button>回答</button></div>
<p id="p3" class="answer"><a href="answer3.html">回答3</a></p>
</body>
</html>
answer1.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ajax test</title>
</head>
<body>
<p>回答1</p>
</body>
</html>
参考にしたAjax関連記事です。詳細はこちらで。
jQueryでAjaxを利用する基本チュートリアル
http://ascii.jp/elem/000/000/458/458236/
No.3
- 回答日時:
Ajaxを使いというのなら下記のページでお勉強すればいいんじゃないですかね。
初級のSTEP13.14あたりがやりたいことと一致すると思われますが。
http://ajax.pgtop.net/category/4229716-1.html
>>prototype.jsやjQueryなどのAjaxライブラリを使ったことはありませんので,もしつかうのならばできれば詳しく教えて下さい。
Ajaxの際には主にブラウザ間の実相の違いを吸収してくれるものなので、無理に使おうとしなくても慣れないうちはお決まりの文を書けばいい、程度に思っていればいいんじゃないでしょうか。
今は分からなくてもプログラムを書いていればすぐに理解できると思います。
Ajaxについては同じサイトの初級のステップ9.10あたりに書いてありますね。
回答ありがとうございます。
教えていただいたwebページがメンテナンス中で見ることができなかったため,確認ができず御礼を書くのが遅れてしまい申し訳ありませんでした。
このページを読んで勉強してみようと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL MySQL,JavaScript,PHPコードの結果を表示する方法を教えてください。 1 2023/02/13 17:49
- HTML・CSS HTMLを正しく表示させるには 2 2023/06/18 09:12
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- その他(IT・Webサービス) WEBサイト内のファイルを探す方法は? 1 2022/11/11 16:38
- システム 外付けHDDの初期化について 4 2023/03/05 20:00
- Perl Perlで特定文字列から特定文字列までを抜き出したい 4 2022/04/02 14:24
- Visual Basic(VBA) エクセルのマクロについて教えてください マクロを実行すると メッセージボックスが表示されて okをク 4 2023/07/05 19:32
- ドメイン・サーバー・クラウドサービス 自作サイトをサーバーにアップロードしたのですが… 2 2022/11/08 18:12
- ホームページ作成・プログラミング ホームページ作成について。「ワードプレスではありません」。 3 2023/08/13 14:44
- システム 外付けHDDの初期化について 4 2023/03/05 21:19
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テーブルの形式を整えるJavascript
-
別ページのインラインフレーム...
-
JQueryで動的生成のスライダが...
-
google map api で下記のhtmlが...
-
クリックテキストを次ページに表示
-
Javascriptを使ってQRコード読...
-
JavascriptからPHPへのAjax通信...
-
[jQuery UI] sortableを使いaja...
-
jQuery3 reset()が効かない。
-
jQueryのblockUIをformのボタン...
-
FullCalendar の複数月表示につ...
-
スクリプトの外部からの読み込み
-
変数にドットをいれることはか...
-
アコーディオンメニューが他に...
-
ajaxでPHPにPOST送信して結果デ...
-
WebbrowserよりHTMLのValue値を...
-
【お問い合わせフォーム】プル...
-
要素内を常に一番下を表示させたい
-
jqueryで読み込みが終わった画...
-
Selenium4でボタンをクリックで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
インラインフレームを自動更新...
-
jQueryでloadした部分に.jsが効...
-
一定時間ごとに表示内容を切り...
-
location.replaceでの移動
-
jQueryで追加した要素がマウス...
-
jQuery toggle() 戻るで開いた...
-
連番タイトル名を基準にリンク...
-
フレーム内の要素へのXPATHはど...
-
リンク元のファイル名を表示し...
-
EUC-JPに対応しているjQueryを...
-
javascriptで要素の取得が出来ない
-
リンク元のURLのパラメータでペ...
-
自動で現れるTOPにもどるボタン...
-
テーブルの形式を整えるJavascript
-
javascriptからのphpクラス...
-
画面(ウィンドウ)/画像の拡...
-
Safariでの onload="getData()"...
-
$.postとPerlのデータ受け渡し...
-
タブに地図を入れたら、中心が...
-
座標のみでクリックする方法
おすすめ情報