<?xml version="1.0" encoding="UTF-8"?>

<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:admin="http://webns.net/mvcb/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns="http://purl.org/rss/1.0/"
>

<channel rdf:about="http://ajax.pgtop.net/">
<title>Ajax初心者入門講座</title>
<link>http://ajax.pgtop.net/</link>
<description>Ajaxの基礎からはじまり、高機能なJavaScriptデバッガを備えているFirebugの使い方、フレームワークであるPrototype.jsを使ったサンプルまでを、初心者向けに図を使って詳しく解説しています。</description>
<dc:language>ja</dc:language>
<admin:generatorAgent rdf:resource="http://blog.seesaa.jp/" />
<items>
<rdf:Seq>
<rdf:li rdf:resource="http://ajax.pgtop.net/article/86894834.html" />
<rdf:li rdf:resource="http://ajax.pgtop.net/article/86762251.html" />
<rdf:li rdf:resource="http://ajax.pgtop.net/article/86683151.html" />
<rdf:li rdf:resource="http://match.seesaa.jp/ot_listing.pl?aid=35126&amp;sid=ajaxhp&amp;tid=seesaa_hotspot&amp;k=%E8%B2%B7%E5%8F%96&amp;hid=35" />
<rdf:li rdf:resource="http://ajax.pgtop.net/article/86203279.html" />
<rdf:li rdf:resource="http://ajax.pgtop.net/article/86108855.html" />
<rdf:li rdf:resource="http://match.seesaa.jp/ot_listing.pl?aid=35126&amp;sid=ajaxhp&amp;tid=seesaa_hotspot&amp;k=%E3%83%9B%E3%83%BC%E3%83%A0%E3%83%9A%E3%83%BC%E3%82%B8&amp;hid=35" />
<rdf:li rdf:resource="http://ajax.pgtop.net/article/85790665.html" />
<rdf:li rdf:resource="http://ajax.pgtop.net/article/85612789.html" />
<rdf:li rdf:resource="http://ajax.pgtop.net/article/80068454.html" />
<rdf:li rdf:resource="http://ajax.pgtop.net/article/80062247.html" />
<rdf:li rdf:resource="http://ajax.pgtop.net/article/79289679.html" />
<rdf:li rdf:resource="http://ajax.pgtop.net/article/79119141.html" />
<rdf:li rdf:resource="http://ajax.pgtop.net/article/79086638.html" />
<rdf:li rdf:resource="http://ajax.pgtop.net/article/79032931.html" />
<rdf:li rdf:resource="http://ajax.pgtop.net/article/78888653.html" />
<rdf:li rdf:resource="http://ajax.pgtop.net/article/78856579.html" />
</rdf:Seq>
</items>
</channel>

<item rdf:about="http://ajax.pgtop.net/article/86894834.html">
<link>http://ajax.pgtop.net/article/86894834.html</link>
<title>Ajax sample011で使用したプログラムの解説。</title>
<description>今回は sample011 で使用した Ajax プログラムについて、解説します。実際にプログラムを動かしながら解説を読むと理解が深まります。DOM を使って要素数を調べて、子要素を削除しているところがポイントです。■index.html側(1)新しい JavaScript の外部ファイルを読み込む部分を追加しました。&amp;lt;script type="text/javascript" src="city.js"&amp;gt;&amp;lt;/script&amp;gt;(2)タイトルを変えました。...</description>
<dc:subject>Step21・sample011の解説</dc:subject>
<dc:creator>Ajax入門</dc:creator>
<dc:date>2008-02-24T21:38:15+09:00</dc:date>
<content:encoded><![CDATA[
今回は sample011 で使用した <strong>Ajax</strong> プログラムについて、解説します。実際にプログラムを動かしながら解説を読むと理解が深まります。<br /><br />DOM を使って要素数を調べて、子要素を削除しているところがポイントです。<br /><br /><br />■index.html側<br /><br />(1)新しい JavaScript の外部ファイルを読み込む部分を追加しました。<br />&lt;script type="text/javascript" src="city.js"&gt;&lt;/script&gt;<br /><br /><br />(2)タイトルを変えました。<br />&lt;title&gt;pref・city&lt;/title&gt;<br /><br />(3)新しい div 要素(result2)を追加しました。<br />&lt;div id="result2"&gt;&lt;/div&gt;<br /><br /><br />■index.js側<br /><br />(1)変数を追加しました。<br />var result2;<br /><br />(2)変数で div 要素(result2)を参照できるようにしている部分です。<br />result2 = $('result2');<br /><br />(3)関数 clearDisp() は使わないので、削除しました。<br /><br /><br />■pref.js側<br /><br />(1)都道府県の選択リストボックスを切り替えた時に、呼び出される関数 prefChange() の中に、市町村をクリアする関数 clearCity() と、市町村を表示する関数 cityDisp() を加えました。<br /><br />function prefChange(obj) {<br />&nbsp;&nbsp;&nbsp;&nbsp;省略<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//市町村をクリア<br />&nbsp;&nbsp;&nbsp;&nbsp;clearCity();<br />&nbsp;&nbsp;&nbsp;&nbsp;//市町村を表示<br />&nbsp;&nbsp;&nbsp;&nbsp;cityDisp(prefCd);<br />&nbsp;&nbsp;}<br />}<br /><br />(2)関数 cityDisp() は、取得した値(value)を引数にしているところがポイントです。<br />cityDisp(prefCd);<br /><br />＊prefCd は市町村の抽出条件に使われます。<br /><br /><br />■city.js側<br /><br />(1)city.js は、ほどんと pref.js と同じです。大きな違いは関数 clearCity() だけです。<br /><br />function clearCity() {<br />&nbsp;&nbsp;//result2の子要素を取得<br />&nbsp;&nbsp;var sel = result2.childNodes;<br /><br />&nbsp;&nbsp;//既に子要素がある場合は削除<br />&nbsp;&nbsp;if (sel.length &gt;= 1) {<br />&nbsp;&nbsp;&nbsp;&nbsp;result2.removeChild(sel[0]);<br />&nbsp;&nbsp;}<br /><br />}<br /><br />(2)div 要素(result2)の子要素を取得している部分です。<br />var sel = result2.childNodes;<br /><br />・div 要素(result2)からみると、select要素が子要素になります。<br />・childNodes の戻り値は配列になります。<br /><br /><br />(3)子要素がある場合(すでにselect要素がある)は、削除しています。<br />result2.removeChild(sel[0]);<br /><br />・1回目は子要素が無いので何もしません。<br />・selは配列です。子要素は1個しかないので、[0]番目を指定しています。<br />　(配列は0から始まるため)<br /><br /><br />(4)clearCity()を呼び出さないと、以下のようにselect要素がどんどん増えます。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-342.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-342-thumbnail2.gif" alt="ajax-342.gif" width="150" height="113" border="0" /></a><br /><br />pref.js でコメントにすると確認できます。<br />//clearCity();<br /><br /><br />■pref.php側<br />pref.phpに変更はありません。<br /><br /><br />■city.php側<br /><br />(1) city.phpでは、GETメソッドで値を受け取った場合は、さらに「GetCity.php」を呼び出し、XMLとして出力します。値を受け取らなかった場合は、HTMLとしてメッセージを出力します。<br /><br />&lt;?php<br />&nbsp;&nbsp;if (isset($_GET["prefCd"])){<br />&nbsp;&nbsp;&nbsp;&nbsp;header("Content-type: application/xml");<br />&nbsp;&nbsp;&nbsp;&nbsp;$prefCd = $_GET["prefCd"];<br />&nbsp;&nbsp;&nbsp;&nbsp;$url = "<a href="http://ws.bzen.net/pgtop/GetCity.php?prefCd=" target="_blank">http://ws.bzen.net/pgtop/GetCity.php?prefCd=</a>".$prefCd;<br />&nbsp;&nbsp;&nbsp;&nbsp;readfile($url);<br />&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;&nbsp;header("Content-type: text/html");<br />&nbsp;&nbsp;&nbsp;&nbsp;print "パラメータに prefCd を含めてください。";<br />&nbsp;&nbsp;}<br />?&gt;<br /><br /><br />(2)if文を使って、GETメソッドで値を受け取ったかどうかで、処理を分岐しています。<br /><br />if (isset($_GET["prefCd"])){<br />&nbsp;&nbsp;省略<br />}else{<br />&nbsp;&nbsp;省略<br />}<br /><br /><br />(3)XMLで出力することをブラウザに送信する処理です。<br />header("Content-type: application/xml");<br /><br /><br />(4)受け取った値を変数に代入している部分です。<br />$prefCd = $_GET["prefCd"];<br /><br /><br />(5)受け取った値を、さらに外部ドメインのプログラムへのパラメータとして組み立てている部分です。<br />$url = "<a href="http://ws.bzen.net/pgtop/GetCity.php?prefCd=" target="_blank">http://ws.bzen.net/pgtop/GetCity.php?prefCd=</a>".$prefCd;<br /><br /><br />(6)実際に外部のドメインにあるファイルを開いているのは、readfile()関数を使っているこの1行です。<br /><br />readfile($url);<br /><br /><br />(7)HTMLで出力することをブラウザに送信する処理です。<br />header("Content-type: text/html");<br /><br /><br />■index.css側<br /><br />(1)div 要素(result2)を追加したので、CSSにも追加しました。<br /><br />#result2 {<br />&nbsp;&nbsp;省略<br />}<br /><br /><br />(2)選択リストボックスを横に並べるため、要素を回り込ませています。<br />float:left;<br /><br />・floatを指定しなかった場合は、下に表示されます。<br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-343.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-343-thumbnail2.gif" alt="ajax-343.gif" width="150" height="108" border="0" /></a><br /><br /><br />(3)div 要素の間を広げています。<br />margin-right:10px;<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-344.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-344-thumbnail2.gif" alt="ajax-344.gif" width="150" height="101" border="0" /></a><br /><br /><br />(4)選択リストボックスで、フォントサイズは効果がないので不要です。<br />font-size:14px;<br /><br />これは以前に、ブラウザの画面に div 要素として、直接出力していた時の名残です。削除してかまいません。<br /><br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="http://ajax.pgtop.net/article/86762251.html">
<link>http://ajax.pgtop.net/article/86762251.html</link>
<title>Ajax sample011の動作確認をしてみる。</title>
<description>前回に作成した Ajax プログラムの動作を確認してみましょう。このプログラムは、都道府県を切り替えたら、自動的に市町村が変わるというものです。使い方をマスターすれば、いろいろ応用範囲が広がります。プログラムがまだの方は一つ前のステップをご覧ください。プログラムの準備ができたら、Webサーバーを起動して動作を確認します。【1】C:\phpdev にある「2K-NT-XP-phpdev_start.bat」をダブルクリックして、phpdev を起動します。【2】まずは「city...</description>
<dc:subject>Step20・sample011の動作確認</dc:subject>
<dc:creator>Ajax入門</dc:creator>
<dc:date>2008-02-24T17:09:58+09:00</dc:date>
<content:encoded><![CDATA[
前回に作成した <strong>Ajax</strong> プログラムの動作を確認してみましょう。<br /><br />このプログラムは、都道府県を切り替えたら、自動的に市町村が変わるというものです。使い方をマスターすれば、いろいろ応用範囲が広がります。<br /><br />プログラムがまだの方は一つ前のステップをご覧ください。<br /><br />プログラムの準備ができたら、Webサーバーを起動して動作を確認します。<br /><br />【1】C:\phpdev にある「2K-NT-XP-phpdev_start.bat」をダブルクリックして、phpdev を起動します。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-166.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-166-thumbnail2.gif" alt="ajax-166.gif" width="150" height="111" border="0" /></a><br /><br /><br />【2】まずは「city.php」がちゃんと動くか確認します。<br /><br /><a href="http://localhost/ajax/sample011/city.php?prefCd=1" target="_blank">http://localhost/ajax/sample011/city.php?prefCd=1</a><br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-330.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-330-thumbnail2.gif" alt="ajax-330.gif" width="118" height="150" border="0" /></a><br /><br />＊city.php の確認は非常に重要です。<br /><br />city.php で XML が表示されなければ、city.js のプログラムも動きません。city.php は別ドメインにある「GetCity.php」を、同一ドメイン(localhost)にするための、中継プログラムです。<br /><br /><br />【3】今度はわざとパラメータを含めないで動かしてみます。パラメータを含めない場合は、メッセージが表示されます。<br /><br /><a href="http://localhost/ajax/sample011/city.php" target="_blank">http://localhost/ajax/sample011/city.php</a><br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-331.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-331-thumbnail2.gif" alt="ajax-331.gif" width="150" height="133" border="0" /></a><br /><br /><br />次はいよいよ Ajax プログラムの動作確認です。<br /><br />【4】Firefox を起動して、動作を確認します。<br /><br /><a href="http://localhost/ajax/sample0011/" target="_blank">http://localhost/ajax/sample0011/</a><br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-333.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-333-thumbnail2.gif" alt="ajax-333.gif" width="150" height="94" border="0" /></a><br /><br /><br />【5】どれか都道府県を選択してください。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-334.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-334-thumbnail2.gif" alt="ajax-334.gif" width="150" height="121" border="0" /></a><br /><br /><br />【6】新たに選択リストボックスが表示されました。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-335.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-335-thumbnail2.gif" alt="ajax-335.gif" width="150" height="98" border="0" /></a><br /><br />新しい選択リストボックスには、選択した都道府県に対応する市町村のリストが表示されます。<br /><br /><br />【7】どれか市町村を選択してください。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-336.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-336-thumbnail2.gif" alt="ajax-336.gif" width="150" height="109" border="0" /></a><br /><br /><br />【8】選択した市町村の値が、メッセージとして表示されました。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-337.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-337-thumbnail2.gif" alt="ajax-337.gif" width="150" height="86" border="0" /></a><br /><br /><br />【9】他の都道府県に切り替えてみましょう。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-338.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-338-thumbnail2.gif" alt="ajax-338.gif" width="150" height="110" border="0" /></a><br /><br /><br />【10】都道府県を切り替えると、市町村がリセットされます。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-339.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-339-thumbnail2.gif" alt="ajax-339.gif" width="150" height="91" border="0" /></a><br /><br /><br />【11】選択した都道府県に対応する市町村のリストに変わりました。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-340.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-340-thumbnail2.gif" alt="ajax-340.gif" width="150" height="119" border="0" /></a><br /><br /><br />【12】他の都道府県や市町村でも試してください。<br /><br /><br />【13】同様に Internet Explorer でも動作を確認してください。<br /><br />・Internet Explorer の場合<br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-341.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-341-thumbnail2.gif" alt="ajax-341.gif" width="150" height="147" border="0" /></a><br /><br /><br />【ワンポイント】<br /><br />市町村の選択リストボックスを切り替えたときに、取得した値を使って、次のプログラムを呼び出す条件にすれば、 <a href="http://ws.bzen.net/tokusan/" target="_blank">全国の特産品検索</a> のような使い方ができます。<br />(Internet Explorer で確認)<br /><br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="http://ajax.pgtop.net/article/86683151.html">
<link>http://ajax.pgtop.net/article/86683151.html</link>
<title>Ajax 都道府県から市町村を絞り込んで表示する方法。</title>
<description>今回は都道府県を選択すると、該当する市町村の一覧が表示できる Ajax プログラムについて説明します。全国に都道府県は 47 しかありませんが、市町村は 1900 を超えます。レコードを全件表示していては大変です。そこで「URLにパラメータを渡すと、該当する市町村のリストをXMLで返す」というWebサービスを私が作りました。http://ws.bzen.net/pgtop/GetCity.php?prefCd=1prefCd=1 の数字を 1~47 の範囲で変更すると、XML...</description>
<dc:subject>Step19・市町村を絞り込んで表示する</dc:subject>
<dc:creator>Ajax入門</dc:creator>
<dc:date>2008-02-24T15:24:36+09:00</dc:date>
<content:encoded><![CDATA[
今回は都道府県を選択すると、該当する市町村の一覧が表示できる <strong>Ajax</strong> プログラムについて説明します。<br /><br />全国に都道府県は 47 しかありませんが、市町村は 1900 を超えます。レコードを全件表示していては大変です。<br /><br />そこで「URLにパラメータを渡すと、該当する市町村のリストをXMLで返す」というWebサービスを私が作りました。<br /><br /><a href="http://ws.bzen.net/pgtop/GetCity.php?prefCd=1" target="_blank">http://ws.bzen.net/pgtop/GetCity.php?prefCd=1</a><br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-332.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-332-thumbnail2.gif" alt="ajax-332.gif" width="123" height="150" border="0" /></a><br /><br />prefCd=1 の数字を 1～47 の範囲で変更すると、XMLのデータが変わります。<br /><br />このWebサービスを Ajax のプログラムから利用することで、都道府県を切り替えるごとに市町村が変わるフォーム部品が作れます。<br /><br />＊上記のWebサービスは、サーバーに付加がかかるため、この講座の学習目的でのみ利用できます。その他の目的での利用は禁止します。<br /><br />今回はプログラムが長いので、プログラミング、動作確認、プログラムの解説、というステップに分けて解説します。まずはプログラミングから行ないましょう。<br /><br /><br />【1】sample010 フォルダをコピーして sample011 フォルダを作成します。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-328.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-328-thumbnail2.gif" alt="ajax-328.gif" width="150" height="140" border="0" /></a><br /><br /><br />【2】今回は最終的に以下のようなファイルの構成になります。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-329.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-329-thumbnail2.gif" alt="ajax-329.gif" width="150" height="104" border="0" /></a><br /><br />・city.js と city.php は新たに作成します。<br />・pref.php と city.php は SHIFT-JIS、それ以外は UTF-8 形式で保存してください。<br />・変更点があるのは index.html、index.js、pref.js、index.css です。<br />・pref.php に変更はありませんので省略します。<br /><br />＊「\」はWindowsでは円記号のことです。<br /><br />保存先　C:\phpdev\www\ajax\sample011<br />ファイル名　index.html<br /><div class="pg"><br />&lt;html&gt;<br />&nbsp;&nbsp;&lt;head&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type="text/javascript" src="../lib/prototype.js"&gt;&lt;/script&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type="text/javascript" src="index.js"&gt;&lt;/script&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type="text/javascript" src="pref.js"&gt;&lt;/script&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type="text/javascript" src="city.js"&gt;&lt;/script&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;link href="index.css" rel="stylesheet" type="text/css"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;pref・city&lt;/title&gt;<br />&nbsp;&nbsp;&lt;/head&gt;<br />&nbsp;&nbsp;&lt;body&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id="state"&gt;&lt;/div&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id="result"&gt;&lt;/div&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id="result2"&gt;&lt;/div&gt;<br />&nbsp;&nbsp;&lt;/body&gt;<br />&lt;/html&gt;<br /></div><br /><br />保存先　C:\phpdev\www\ajax\sample011<br />ファイル名　index.js<br /><div class="pg"><br />onload = init;<br />var state;<br />var result;<br />var result2;<br /><br />function init() {<br />&nbsp;&nbsp;state = $('state');<br />&nbsp;&nbsp;result = $('result');<br />&nbsp;&nbsp;result2 = $('result2');<br />&nbsp;&nbsp;prefDisp();<br />}<br /></div><br /><br />保存先　C:\phpdev\www\ajax\sample011<br />ファイル名　pref.js<br /><div class="pg"><br />function prefDisp() {<br />&nbsp;&nbsp;state.innerHTML = "処理中です・・・&lt;br /&gt;\n";<br />&nbsp;&nbsp;var url = "pref.php";<br />&nbsp;&nbsp;var paramList = "";<br /><br />&nbsp;&nbsp;new Ajax.Request(url,<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method: 'get',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onSuccess: getData,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onFailure: showErrMsg,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: paramList<br />&nbsp;&nbsp;});<br /><br />&nbsp;&nbsp;function getData(data){<br />&nbsp;&nbsp;&nbsp;&nbsp;var response = data.responseXML.getElementsByTagName('Response');<br />&nbsp;&nbsp;&nbsp;&nbsp;var item = response[0].getElementsByTagName('Item');<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//select作成<br />&nbsp;&nbsp;&nbsp;&nbsp;var sel = document.createElement('select');<br />&nbsp;&nbsp;&nbsp;&nbsp;sel.setAttribute('id', 'selectPref');<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//1行目のオプション<br />&nbsp;&nbsp;&nbsp;&nbsp;var opt = document.createElement('option');<br />&nbsp;&nbsp;&nbsp;&nbsp;opt.setAttribute('value', 0);<br />&nbsp;&nbsp;&nbsp;&nbsp;var text = document.createTextNode('選択してください。');<br />&nbsp;&nbsp;&nbsp;&nbsp;opt.appendChild(text);<br />&nbsp;&nbsp;&nbsp;&nbsp;sel.appendChild(opt);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//2行目以降のオプション<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i = 0; i &lt; item.length; i++){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var prefCd = item[i].getElementsByTagName('PREF_CD');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var prefCdValue = prefCd[0].firstChild.nodeValue;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var prefName = item[i].getElementsByTagName('PREF_NAME');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var prefNameValue = prefName[0].firstChild.nodeValue;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var opt = document.createElement('option');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;opt.setAttribute('value', prefCdValue);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var text = document.createTextNode(prefNameValue);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;opt.appendChild(text);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sel.appendChild(opt);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//selectをresult要素に追加<br />&nbsp;&nbsp;&nbsp;&nbsp;result.appendChild(sel);<br />&nbsp;&nbsp;&nbsp;&nbsp;//イベントハンドラの設定<br />&nbsp;&nbsp;&nbsp;&nbsp;$('selectPref').onchange = function (){prefChange(this);}<br />&nbsp;&nbsp;&nbsp;&nbsp;state.innerHTML = "データを取得しました。&lt;br /&gt;\n";<br />&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;function showErrMsg(){<br />&nbsp;&nbsp;&nbsp;&nbsp;clearDisp();<br />&nbsp;&nbsp;&nbsp;&nbsp;state.innerHTML = "データを取得できませんでした。&lt;br /&gt;\n";<br />&nbsp;&nbsp;}<br /><br />}<br /><br />function prefChange(obj) {<br />&nbsp;&nbsp;var prefCd = Number(obj.value);<br /><br />&nbsp;&nbsp;if (prefCd == 0) {<br />&nbsp;&nbsp;&nbsp;&nbsp;state.innerHTML = "都道府県が選択されていません。&lt;br /&gt;\n";<br />&nbsp;&nbsp;} else {<br />&nbsp;&nbsp;&nbsp;&nbsp;var prefName = obj.options[obj.selectedIndex].text;<br />&nbsp;&nbsp;&nbsp;&nbsp;state.innerHTML = prefCd + "：" + prefName + " を選択しました。&lt;br /&gt;\n";<br />&nbsp;&nbsp;&nbsp;&nbsp;//市町村をクリア<br />&nbsp;&nbsp;&nbsp;&nbsp;clearCity();<br />&nbsp;&nbsp;&nbsp;&nbsp;//市町村を表示<br />&nbsp;&nbsp;&nbsp;&nbsp;cityDisp(prefCd);<br />&nbsp;&nbsp;}<br /><br />}<br /></div><br /><br />保存先　C:\phpdev\www\ajax\sample011<br />ファイル名　city.js<br /><div class="pg"><br />function cityDisp(prefCd) {<br />&nbsp;&nbsp;state.innerHTML = "処理中です・・・&lt;br /&gt;\n";<br />&nbsp;&nbsp;var url = "city.php";<br />&nbsp;&nbsp;var paramList = "prefCd=" + prefCd;<br /><br />&nbsp;&nbsp;new Ajax.Request(url,<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method: 'get',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onSuccess: getData,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onFailure: showErrMsg,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: paramList<br />&nbsp;&nbsp;});<br /><br />&nbsp;&nbsp;function getData(data){<br />&nbsp;&nbsp;&nbsp;&nbsp;var response = data.responseXML.getElementsByTagName('Response');<br />&nbsp;&nbsp;&nbsp;&nbsp;var item = response[0].getElementsByTagName('Item');<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//select作成<br />&nbsp;&nbsp;&nbsp;&nbsp;var sel = document.createElement('select');<br />&nbsp;&nbsp;&nbsp;&nbsp;sel.setAttribute('id', 'selectCity');<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//1行目のオプション<br />&nbsp;&nbsp;&nbsp;&nbsp;var opt = document.createElement('option');<br />&nbsp;&nbsp;&nbsp;&nbsp;opt.setAttribute('value', 0);<br />&nbsp;&nbsp;&nbsp;&nbsp;var text = document.createTextNode('選択してください。');<br />&nbsp;&nbsp;&nbsp;&nbsp;opt.appendChild(text);<br />&nbsp;&nbsp;&nbsp;&nbsp;sel.appendChild(opt);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//2行目以降のオプション<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i = 0; i &lt; item.length; i++){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var cityCd = item[i].getElementsByTagName('CITY_CD');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var cityCdValue = cityCd[0].firstChild.nodeValue;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var cityName = item[i].getElementsByTagName('CITY_NAME');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var cityNameValue = cityName[0].firstChild.nodeValue;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var opt = document.createElement('option');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;opt.setAttribute('value', cityCdValue);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var text = document.createTextNode(cityNameValue);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;opt.appendChild(text);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sel.appendChild(opt);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//selectをresult2要素に追加<br />&nbsp;&nbsp;&nbsp;&nbsp;result2.appendChild(sel);<br />&nbsp;&nbsp;&nbsp;&nbsp;//イベントハンドラの設定<br />&nbsp;&nbsp;&nbsp;&nbsp;$('selectCity').onchange = function (){cityChange(this);}<br />&nbsp;&nbsp;&nbsp;&nbsp;state.innerHTML = "データを取得しました。&lt;br /&gt;\n";<br />&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;function showErrMsg(){<br />&nbsp;&nbsp;&nbsp;&nbsp;clearDisp();<br />&nbsp;&nbsp;&nbsp;&nbsp;state.innerHTML = "データを取得できませんでした。&lt;br /&gt;\n";<br />&nbsp;&nbsp;}<br /><br />}<br /><br />function cityChange(obj) {<br />&nbsp;&nbsp;var cityCd = Number(obj.value);<br /><br />&nbsp;&nbsp;if (cityCd == 0) {<br />&nbsp;&nbsp;&nbsp;&nbsp;state.innerHTML = "市町村が選択されていません。&lt;br /&gt;\n";<br />&nbsp;&nbsp;} else {<br />&nbsp;&nbsp;&nbsp;&nbsp;var cityName = obj.options[obj.selectedIndex].text;<br />&nbsp;&nbsp;&nbsp;&nbsp;state.innerHTML = cityCd + "：" + cityName + " を選択しました。&lt;br /&gt;\n";<br />&nbsp;&nbsp;}<br /><br />}<br /><br />function clearCity() {<br />&nbsp;&nbsp;//result2の子要素を取得<br />&nbsp;&nbsp;var sel = result2.childNodes;<br /><br />&nbsp;&nbsp;//既に子要素がある場合は削除<br />&nbsp;&nbsp;if (sel.length &gt;= 1) {<br />&nbsp;&nbsp;&nbsp;&nbsp;result2.removeChild(sel[0]);<br />&nbsp;&nbsp;}<br /><br />}<br /></div><br /><br />保存先　C:\phpdev\www\ajax\sample011<br />ファイル名　index.css<br /><div class="pg"><br />#state {<br />&nbsp;&nbsp;font-size:16px;<br />&nbsp;&nbsp;color:#0000cc;<br />&nbsp;&nbsp;margin-top:10px;<br />&nbsp;&nbsp;margin-bottom:10px;<br />}<br /><br />#result {<br />&nbsp;&nbsp;float:left;<br />&nbsp;&nbsp;margin-right:10px;<br />&nbsp;&nbsp;font-size:14px;<br />&nbsp;&nbsp;color:#000000;<br />}<br /><br />#result2 {<br />&nbsp;&nbsp;font-size:14px;<br />&nbsp;&nbsp;color:#000000;<br />}<br /></div><br /><br />保存先　C:\phpdev\www\ajax\sample011<br />ファイル名　city.php<br /><div class="pg"><br />&lt;?php<br />&nbsp;&nbsp;if (isset($_GET["prefCd"])){<br />&nbsp;&nbsp;&nbsp;&nbsp;header("Content-type: application/xml");<br />&nbsp;&nbsp;&nbsp;&nbsp;$prefCd = $_GET["prefCd"];<br />&nbsp;&nbsp;&nbsp;&nbsp;$url = "<a href="http://ws.bzen.net/pgtop/GetCity.php?prefCd=" target="_blank">http://ws.bzen.net/pgtop/GetCity.php?prefCd=</a>".$prefCd;<br />&nbsp;&nbsp;&nbsp;&nbsp;readfile($url);<br />&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;&nbsp;header("Content-type: text/html");<br />&nbsp;&nbsp;&nbsp;&nbsp;print "パラメータに prefCd を含めてください。";<br />&nbsp;&nbsp;}<br />?&gt;<br /></div><br /><br />pref.php を含めると、必要なファイルは全部で 7つ です。<br /><br />変更点のある index.html、index.js、pref.js、index.css については、それほど大きな変更ではありません。また新たに作成した city.js と city.php も、 pref.js と pref.php を少し改良しただけです。<br /><br />ファイル数が増え、プログラムも長くなったように感じるかもしれませんが、中身は今までとほとんど同じで、新しいことは少しだけです。<br /><br />これまでのステップを順番に学んできた方は、詳しい説明がなくても、大体意味がつかめる力が身に付いていると思います。<br /><br />プログラムの動作確認は次回に行ないます。<br /><br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="http://match.seesaa.jp/ot_listing.pl?aid=35126&amp;sid=ajaxhp&amp;tid=seesaa_hotspot&amp;k=%E8%B2%B7%E5%8F%96&amp;hid=35">
<link>http://match.seesaa.jp/ot_listing.pl?aid=35126&amp;sid=ajaxhp&amp;tid=seesaa_hotspot&amp;k=%E8%B2%B7%E5%8F%96&amp;hid=35</link>
<title>オススメ・スポンサーサイト「買取」</title>
<description><![CDATA[
<a href="http://match.seesaa.jp/ot_listing.pl?aid=35126&sid=ajaxhp&tid=seesaa_hotspot&k=%E9%AB%98%E4%BE%A1%20%E8%B2%B7%E5%8F%96&hid=35">高価 買取</a>&nbsp;|&nbsp;<a href="http://match.seesaa.jp/ot_listing.pl?aid=35126&sid=ajaxhp&tid=seesaa_hotspot&k=%E3%83%91%E3%82%BD%E3%82%B3%E3%83%B3%20%E8%B2%B7%E5%8F%96&hid=35">パソコン 買取</a>&nbsp;|&nbsp;<a href="http://match.seesaa.jp/ot_listing.pl?aid=35126&sid=ajaxhp&tid=seesaa_hotspot&k=%E5%AE%B6%E9%9B%BB%20%E8%B2%B7%E5%8F%96&hid=35">家電 買取</a>&nbsp;|&nbsp;<a href="http://match.seesaa.jp/ot_listing.pl?aid=35126&sid=ajaxhp&tid=seesaa_hotspot&k=%E8%BB%8A%20%E8%B2%B7%E5%8F%96&hid=35">車 買取</a>&nbsp;|&nbsp;<a href="http://match.seesaa.jp/ot_listing.pl?aid=35126&sid=ajaxhp&tid=seesaa_hotspot&k=%E3%83%90%E3%82%A4%E3%82%AF%20%E8%B2%B7%E5%8F%96&hid=35">バイク 買取</a>
]]></description>
<dc:date>2008-02-24T15:24:36+09:00</dc:date>
<dc:creator>ads by Seesaa</dc:creator>
</item>
<item rdf:about="http://ajax.pgtop.net/article/86203279.html">
<link>http://ajax.pgtop.net/article/86203279.html</link>
<title>Ajax sample010で使用したプログラムの解説。</title>
<description>今回は sample010 で使用した Ajax のプログラムについて、詳しく解説します。 DOM(ドム:Document Object Model) を使っている部分を重点的に説明します。「.innerHTML」を使った時と「DOM」を使った時で、どのように変わるのか考えながら読んでみてください。■index.html側HTMLには div 要素に id 名を付けているだけで、中身は空です。&amp;lt;div id="result"&amp;gt;&amp;lt;/div&amp;gt;■pref.j...</description>
<dc:subject>Step18・sample010の解説</dc:subject>
<dc:creator>Ajax入門</dc:creator>
<dc:date>2008-02-23T23:14:06+09:00</dc:date>
<content:encoded><![CDATA[
今回は sample010 で使用した <strong>Ajax</strong> のプログラムについて、詳しく解説します。 DOM(ドム:Document Object Model) を使っている部分を重点的に説明します。<br /><br />「.innerHTML」を使った時と「DOM」を使った時で、どのように変わるのか考えながら読んでみてください。<br /><br /><br />■index.html側<br />HTMLには div 要素に id 名を付けているだけで、中身は空です。<br /><br />&lt;div id="result"&gt;&lt;/div&gt;<br /><br /><br />■pref.js側<br /><br />(1)select要素を作成している部分です。<br />var sel = document.createElement('select');<br /><br />イメージ<br />&lt;select&gt;&lt;/select&gt;<br /><br />＊新しい要素を作成するには、createElementメソッドを使います。<br /><br /><br />(2)select要素に id 名を付けている部分です。<br />sel.setAttribute('id', 'selectPref');<br /><br />イメージ<br />&lt;select id="selectPref"&gt;&lt;/select&gt;<br /><br /><br />(3)1行目の option 要素を作成している部分です。<br />var opt = document.createElement('option');<br /><br />&lt;option&gt;&lt;/option&gt;<br /><br /><br />(4)option 要素に値をセットしている部分です。<br />opt.setAttribute('value', 0);<br /><br />&lt;option value="0"&gt;&lt;/option&gt;<br /><br /><br />(5)option 要素内に項目をセットしている部分です。<br />var text = document.createTextNode('選択してください。');<br />opt.appendChild(text);<br /><br />&lt;option value="0"&gt;選択してください。&lt;/option&gt;<br /><br />＊要素内に文字列を使う場合は、createTextNode で「テキストノード」を作成する必要があります。文字列を直接使うことはできないので注意してください。<br /><br />＊要素を親要素に追加するには、appendChildメソッドを使います。<br /><br /><br />(6)select要素に option 要素を追加している部分です。<br />sel.appendChild(opt);<br /><br />&lt;select id="selectPref"&gt;<br />&nbsp;&nbsp;&lt;option value="0"&gt;選択してください。&lt;/option&gt;<br />&lt;/select&gt;<br /><br /><br />(7)2行目以降の option 要素は、for文の中で作成します。レコード件数分だけ繰り返されます。<br /><br />for(i = 0; i &lt; item.length; i++){<br />&nbsp;&nbsp;省略<br />}<br /><br /><br />(8)2行目の option 要素を作成している部分です。<br />var opt = document.createElement('option');<br /><br />&lt;option&gt;&lt;/option&gt;<br /><br /><br />(9)option 要素に値をセットしている部分です。<br />opt.setAttribute('value', prefCdValue);<br /><br />&lt;option value="1"&gt;&lt;/option&gt;<br /><br /><br />(10)option 要素内に項目をセットしている部分です。<br />var text = document.createTextNode(prefNameValue);<br />opt.appendChild(text);<br /><br />&lt;option value="1"&gt;北海道&lt;/option&gt;<br /><br /><br />(11)select要素に option 要素を追加している部分です。<br />sel.appendChild(opt);<br /><br />&lt;select id="selectPref"&gt;<br />&nbsp;&nbsp;&lt;option value="0"&gt;選択してください。&lt;/option&gt;<br />&nbsp;&nbsp;&lt;option value="1"&gt;北海道&lt;/option&gt;<br />&lt;/select&gt;<br /><br /><br />(12)もう一度for文が繰り返されると、以下のようになります。<br /><br />&lt;select id="selectPref"&gt;<br />&nbsp;&nbsp;&lt;option value="0"&gt;選択してください。&lt;/option&gt;<br />&nbsp;&nbsp;&lt;option value="1"&gt;北海道&lt;/option&gt;<br />&nbsp;&nbsp;&lt;option value="2"&gt;青森県&lt;/option&gt;<br />&lt;/select&gt;<br /><br />これがどんどん繰り返されます。<br /><br /><br />(13)select要素を div 要素(result)に追加している部分です。<br />result.appendChild(sel);<br /><br />&lt;div id="result"&gt;<br />&nbsp;&nbsp;&lt;select id="selectPref"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value="0"&gt;選択してください。&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value="1"&gt;北海道&lt;/option&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;option value="2"&gt;青森県&lt;/option&gt;<br />&nbsp;&nbsp;&lt;/select&gt;<br />&lt;/div&gt;<br /><br />＊ここではじめて画面に表示されます。<br /><br /><br />(14)select要素にイベントハンドラを設定している部分です。<br />$('selectPref').onchange = function (){prefChange(this);}<br /><br />＊thisは選択リストボックス自身です。<br /><br />＊select要素を作成した後でないと、イベントハンドラを設定できないため、この位置に書いています。<br /><br /><br />(15)イベントハンドラを設定したので、都道府県を切り替えた時には、関数 prefChange() が呼び出されます。<br /><br />function prefChange(obj) {<br />&nbsp;&nbsp;省略<br />}<br /><br />＊引数の obj は選択リストボックス自身を参照しています。<br /><br /><br />(16)選択リストボックスで、選択したオプションの値(value)を数値にして、変数に代入している部分です。<br />var prefCd = Number(obj.value);<br /><br />＊この値は市町村を絞り込む時の抽出条件に使うことができます。<br /><br /><br />(17)if文で選択リストボックスの値が、0の時(1行目)とそれ以外の時で、処理を分けています。<br /><br />if (prefCd == 0) {<br />&nbsp;&nbsp;state.innerHTML = "都道府県が選択されていません。&lt;br /&gt;\n";<br />} else {<br />&nbsp;&nbsp;var prefName = obj.options[obj.selectedIndex].text;<br />&nbsp;&nbsp;state.innerHTML = prefCd + "：" + prefName + " を選択しました。&lt;br /&gt;\n";<br />}<br /><br />＊選択リストボックスで、選択したオプションの項目(テキスト)は、以下のように取得できます。<br />obj.options[obj.selectedIndex].text;<br /><br /><br />今回のように DOM を使った方法では、要素の種類(select、option、li、a、img など)や目的によって、使うメソッドがいろいろありますので、慣れが必要です。<br /><br />HTMLタグを直接代入できる「.innerHTML」の簡単さがわかったのではないでしょうか。<br /><br /><br />【ワンポイント】<br /><br />index.html側で、select要素と1行目のオプションまでは書いておいて、プログラムでは2行目の option 要素から作成する方法もあります。もちろん1行目は書かなくて、空の select要素だけでもかまいません。<br /><br />&lt;select id="selectPref"&gt;<br />&nbsp;&nbsp;&lt;option value='0' selected&gt;選択してください。&lt;/option&gt;<br />&lt;/select&gt;<br /><br />動的に作成したフォーム部品が、どうしても上手く動作しないときには、あらかじめ親要素だけは書いておくと有効です。<br /><br />その場合、最初から要素が存在するので、index.js側でイベントハンドラを設定することができます。<br /><br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="http://ajax.pgtop.net/article/86108855.html">
<link>http://ajax.pgtop.net/article/86108855.html</link>
<title>Ajax DOMを使って選択リストボックスを書き換える方法。</title>
<description>前回の最後に少し説明した通り、 Ajax で「.innerHTML」を使って、動的に生成したフォーム部品に、イベントハンドラを設定すると、不具合が出ることがあります。そこで今回は DOM(ドム:Document Object Model) を使った方法に書き換えてみます。DOM は慣れるまで少し難しく感じると思いますが、今回はとりあえず動かしてみることに専念してください。【1】sample009 フォルダをコピーして sample010 フォルダを作成します。【2】今回は最終...</description>
<dc:subject>Step17・DOMを使って書き換える</dc:subject>
<dc:creator>Ajax入門</dc:creator>
<dc:date>2008-02-23T16:37:03+09:00</dc:date>
<content:encoded><![CDATA[
前回の最後に少し説明した通り、 <strong>Ajax</strong> で「.innerHTML」を使って、動的に生成したフォーム部品に、イベントハンドラを設定すると、不具合が出ることがあります。<br /><br />そこで今回は DOM(ドム:Document Object Model) を使った方法に書き換えてみます。DOM は慣れるまで少し難しく感じると思いますが、今回はとりあえず動かしてみることに専念してください。<br /><br /><br />【1】sample009 フォルダをコピーして sample010 フォルダを作成します。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-319.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-319-thumbnail2.gif" alt="ajax-319.gif" width="141" height="150" border="0" /></a><br /><br /><br />【2】今回は最終的に以下のようなファイルの構成になります。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-320.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-320-thumbnail2.gif" alt="ajax-320.gif" width="150" height="79" border="0" /></a><br /><br />＊「\」はWindowsでは円記号のことです。<br /><br />変更は pref.js だけです。 index.html、index.js、pref.php、index.css に変更はありませんので省略します。<br /><br />保存先　C:\phpdev\www\ajax\sample010<br />ファイル名　pref.js<br /><div class="pg"><br />function prefDisp() {<br />&nbsp;&nbsp;state.innerHTML = "処理中です・・・&lt;br /&gt;\n";<br />&nbsp;&nbsp;var url = "pref.php";<br />&nbsp;&nbsp;var paramList = "";<br /><br />&nbsp;&nbsp;new Ajax.Request(url,<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method: 'get',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onSuccess: getData,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onFailure: showErrMsg,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: paramList<br />&nbsp;&nbsp;});<br /><br />&nbsp;&nbsp;function getData(data){<br />&nbsp;&nbsp;&nbsp;&nbsp;var response = data.responseXML.getElementsByTagName('Response');<br />&nbsp;&nbsp;&nbsp;&nbsp;var item = response[0].getElementsByTagName('Item');<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//select作成<br />&nbsp;&nbsp;&nbsp;&nbsp;var sel = document.createElement('select');<br />&nbsp;&nbsp;&nbsp;&nbsp;sel.setAttribute('id', 'selectPref');<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//1行目のオプション<br />&nbsp;&nbsp;&nbsp;&nbsp;var opt = document.createElement('option');<br />&nbsp;&nbsp;&nbsp;&nbsp;opt.setAttribute('value', 0);<br />&nbsp;&nbsp;&nbsp;&nbsp;var text = document.createTextNode('選択してください。');<br />&nbsp;&nbsp;&nbsp;&nbsp;opt.appendChild(text);<br />&nbsp;&nbsp;&nbsp;&nbsp;sel.appendChild(opt);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//2行目以降のオプション<br />&nbsp;&nbsp;&nbsp;&nbsp;for(i = 0; i &lt; item.length; i++){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var prefCd = item[i].getElementsByTagName('PREF_CD');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var prefCdValue = prefCd[0].firstChild.nodeValue;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var prefName = item[i].getElementsByTagName('PREF_NAME');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var prefNameValue = prefName[0].firstChild.nodeValue;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var opt = document.createElement('option');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;opt.setAttribute('value', prefCdValue);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var text = document.createTextNode(prefNameValue);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;opt.appendChild(text);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sel.appendChild(opt);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//selectをresult要素に追加<br />&nbsp;&nbsp;&nbsp;&nbsp;result.appendChild(sel);<br />&nbsp;&nbsp;&nbsp;&nbsp;//イベントハンドラの設定<br />&nbsp;&nbsp;&nbsp;&nbsp;$('selectPref').onchange = function (){prefChange(this);}<br />&nbsp;&nbsp;&nbsp;&nbsp;state.innerHTML = "データを取得しました。&lt;br /&gt;\n";<br />&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;function showErrMsg(){<br />&nbsp;&nbsp;&nbsp;&nbsp;clearDisp();<br />&nbsp;&nbsp;&nbsp;&nbsp;state.innerHTML = "データを取得できませんでした。&lt;br /&gt;\n";<br />&nbsp;&nbsp;}<br /><br />}<br /><br />function prefChange(obj) {<br />&nbsp;&nbsp;var prefCd = Number(obj.value);<br /><br />&nbsp;&nbsp;if (prefCd == 0) {<br />&nbsp;&nbsp;&nbsp;&nbsp;state.innerHTML = "都道府県が選択されていません。&lt;br /&gt;\n";<br />&nbsp;&nbsp;} else {<br />&nbsp;&nbsp;&nbsp;&nbsp;var prefName = obj.options[obj.selectedIndex].text;<br />&nbsp;&nbsp;&nbsp;&nbsp;state.innerHTML = prefCd + "：" + prefName + " を選択しました。&lt;br /&gt;\n";<br />&nbsp;&nbsp;}<br /><br />}<br /></div><br /><br /><br />準備ができたら、Webサーバーを起動して動作を確認してみましょう。<br /><br />【3】C:\phpdev にある「2K-NT-XP-phpdev_start.bat」をダブルクリックして、phpdev を起動します。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-166.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-166-thumbnail2.gif" alt="ajax-166.gif" width="150" height="111" border="0" /></a><br /><br /><br />【4】Firefox を起動して、動作を確認します。<br /><br /><a href="http://localhost/ajax/sample0010/" target="_blank">http://localhost/ajax/sample0010/</a><br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-321.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-321-thumbnail2.gif" alt="ajax-321.gif" width="150" height="88" border="0" /></a><br /><br /><br />【5】どれか都道府県を選択してください。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-322.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-322-thumbnail2.gif" alt="ajax-322.gif" width="150" height="134" border="0" /></a><br /><br /><br />【6】都道府県が選択され、上にメッセージが表示されました。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-323.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-323-thumbnail2.gif" alt="ajax-323.gif" width="150" height="95" border="0" /></a><br /><br />＊選択したオプションの値と項目が表示できるということは、プログラムの中で値を活用できるということです。(例えば市町村を絞り込む検索条件にしたり)<br /><br /><br />【7】他の都道府県でも試してください。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-326.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-326-thumbnail2.gif" alt="ajax-326.gif" width="150" height="82" border="0" /></a><br /><br /><br />【8】今度はわざと一番上の「選択してください。」を選択します。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-324.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-324-thumbnail2.gif" alt="ajax-324.gif" width="150" height="100" border="0" /></a><br /><br /><br />【9】「都道府県が選択されていません。」というメッセージが表示されました。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-325.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-325-thumbnail2.gif" alt="ajax-325.gif" width="150" height="79" border="0" /></a><br /><br /><br />【10】同様に Internet Explorer でも動作を確認してください。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-327.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-327-thumbnail2.gif" alt="ajax-327.gif" width="150" height="121" border="0" /></a><br /><br />選択リストボックスは、前回と同じように動作することが確認できると思います。<br /><br /><br />【ワンポイント】<br /><br />今回の sample010 と同じように、都道府県を切り替えた時にメッセージを表示する機能を、「.innerHTML」を使っている sample009 に組み込んだ場合、 Internet Explorer では動くのですが、Firefox では上手く動きませんでした。<br /><br />やはり DOM を使った方法のほうがよさそうです。<br /><br /><br />DOM のプログラム部分については次回に詳しく解説します。<br /><br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="http://match.seesaa.jp/ot_listing.pl?aid=35126&amp;sid=ajaxhp&amp;tid=seesaa_hotspot&amp;k=%E3%83%9B%E3%83%BC%E3%83%A0%E3%83%9A%E3%83%BC%E3%82%B8&amp;hid=35">
<link>http://match.seesaa.jp/ot_listing.pl?aid=35126&amp;sid=ajaxhp&amp;tid=seesaa_hotspot&amp;k=%E3%83%9B%E3%83%BC%E3%83%A0%E3%83%9A%E3%83%BC%E3%82%B8&amp;hid=35</link>
<title>オススメ・スポンサーサイト「ホームページ」</title>
<description><![CDATA[
<a href="http://match.seesaa.jp/ot_listing.pl?aid=35126&sid=ajaxhp&tid=seesaa_hotspot&k=%E3%83%9B%E3%83%BC%E3%83%A0%E3%83%9A%E3%83%BC%E3%82%B8%20%E8%A3%BD%E4%BD%9C%20%E4%BC%9A%E7%A4%BE&hid=35">ホームページ 製作 会社</a>&nbsp;|&nbsp;<a href="http://match.seesaa.jp/ot_listing.pl?aid=35126&sid=ajaxhp&tid=seesaa_hotspot&k=%E3%83%9B%E3%83%BC%E3%83%A0%E3%83%9A%E3%83%BC%E3%82%B8%20%E5%88%B6%E4%BD%9C%20%E6%A8%AA%E6%B5%9C&hid=35">ホームページ 制作 横浜</a>&nbsp;|&nbsp;<a href="http://match.seesaa.jp/ot_listing.pl?aid=35126&sid=ajaxhp&tid=seesaa_hotspot&k=%E3%83%9B%E3%83%BC%E3%83%A0%E3%83%9A%E3%83%BC%E3%82%B8%20%E5%88%B6%E4%BD%9C%20%E5%90%8D%E5%8F%A4%E5%B1%8B&hid=35">ホームページ 制作 名古屋</a>&nbsp;|&nbsp;<a href="http://match.seesaa.jp/ot_listing.pl?aid=35126&sid=ajaxhp&tid=seesaa_hotspot&k=%E3%83%9B%E3%83%BC%E3%83%A0%E3%83%9A%E3%83%BC%E3%82%B8%20%E8%A3%BD%E4%BD%9C%20%E6%9D%B1%E4%BA%AC&hid=35">ホームページ 製作 東京</a>&nbsp;|&nbsp;<a href="http://match.seesaa.jp/ot_listing.pl?aid=35126&sid=ajaxhp&tid=seesaa_hotspot&k=%E3%83%9B%E3%83%BC%E3%83%A0%E3%83%9A%E3%83%BC%E3%82%B8%20%E5%88%B6%E4%BD%9C%20%E4%BC%9A%E7%A4%BE&hid=35">ホームページ 制作 会社</a>
]]></description>
<dc:date>2008-02-23T16:37:03+09:00</dc:date>
<dc:creator>ads by Seesaa</dc:creator>
</item>
<item rdf:about="http://ajax.pgtop.net/article/85790665.html">
<link>http://ajax.pgtop.net/article/85790665.html</link>
<title>Ajax sample009で使用したプログラムの解説。</title>
<description>今回は sample009 で使用した Ajax のプログラムについて、詳しく解説します。これまでとほとんど同じプログラムなので、選択リストボックスを動的に作成するところ以外は簡単だと思います。Ajax で非同期通信することで、XML形式のデータを、フォーム部品の値として表示する方法をつかんでください。選択リストボックスは、「オプションメニュー」や「セレクトボックス」という場合もあります。■index.html側sample005と比べると、ボタンを除いただけです。■inde...</description>
<dc:subject>Step16・sample009の解説</dc:subject>
<dc:creator>Ajax入門</dc:creator>
<dc:date>2008-02-22T23:16:51+09:00</dc:date>
<content:encoded><![CDATA[
今回は sample009 で使用した <strong>Ajax</strong> のプログラムについて、詳しく解説します。<br /><br />これまでとほとんど同じプログラムなので、選択リストボックスを動的に作成するところ以外は簡単だと思います。<br /><br />Ajax で非同期通信することで、XML形式のデータを、フォーム部品の値として表示する方法をつかんでください。<br /><br />選択リストボックスは、「オプションメニュー」や「セレクトボックス」という場合もあります。<br /><br /><br />■index.html側<br />sample005と比べると、ボタンを除いただけです。<br /><br /><br />■index.js側<br />ページを読み込んだ直後に、すぐ選択リストボックスを表示するため、関数 init() の中で関数 prefDisp() を呼び出すようにしました。<br /><br />function init() {<br />&nbsp;&nbsp;省略<br />&nbsp;&nbsp;prefDisp();<br />}<br /><br /><br />■pref.js側<br /><br />(1)選択リストボックスの開始タグを、変数に代入している部分です。<br />tmpHtml += "&lt;form&gt;&lt;select name='selectPref'&gt;";<br /><br /><br />(2)選択リストボックスの最初のオプション(1行目)を作成している部分です。<br />tmpHtml += "&lt;option value='0' selected&gt;選択してください。&lt;/option&gt;";<br /><br /><br />(3)for文で、選択リストボックスのオプション(2行目以降)を、レコード件数分だけ連結している部分です。<br /><br />&lt;option value='1'&gt;北海道&lt;/option&gt; のような値と項目になります。<br /><br />for(i = 0; i &lt; item.length; i++){<br />&nbsp;&nbsp;var prefCd = item[i].getElementsByTagName('PREF_CD');<br />&nbsp;&nbsp;var prefCdValue = prefCd[0].firstChild.nodeValue;<br /><br />&nbsp;&nbsp;var prefName = item[i].getElementsByTagName('PREF_NAME');<br />&nbsp;&nbsp;var prefNameValue = prefName[0].firstChild.nodeValue;<br /><br />&nbsp;&nbsp;tmpHtml +="&lt;option value='" + prefCdValue + "'&gt;" + prefNameValue + "&lt;/option&gt;\n";<br />}<br /><br /><br />(4)選択リストボックスの終了タグを、変数に代入している部分です。<br />tmpHtml += "&lt;/select&gt;&lt;/form&gt;";<br /><br /><br />(5)プログラムで組み立てた選択リストボックスを、ブラウザの画面に表示している部分です。<br />result.innerHTML = tmpHtml;<br /><br /><br />■pref.php側<br />sample005では静的な XML を使っていましたが、sample009では動的な XML に変更してみました。<br /><br />・静的なXML<br /><a href="http://ws.bzen.net/pgtop/pref.xml" target="_blank">http://ws.bzen.net/pgtop/pref.xml</a><br />↓<br />・動的なXML<br /><a href="http://ws.bzen.net/pgtop/GetPref.php" target="_blank">http://ws.bzen.net/pgtop/GetPref.php</a><br /><br />どちらを使っても結果は同じです。<br /><br />動的な GetPref.php は、データベースのレコードを XML 形式に加工して出力するプログラムです。一種のWebサービスだと考えると、GetPref.php プログラムの中身はブラックボックスでかまいません。<br /><br />Webサービスは、使い方さえわかれば、プログラムの中でどういった処理が行われているのか、考慮しなくても大丈夫です。(楽天や Amazon の Web サービスでも同じ)<br /><br />＊GetPref.php はサーバーに負荷がかかるため、学習目的でのみお使いください。その他の利用は禁止します。<br /><br /><br />【ワンポイント】<br /><br />今回、選択リストボックスの表示に「.innerHTML」プロパティを使いました。この方法が一番簡単だからです。innerHTML は HTML タグや文字列を直接代入できるため、わかりやすいというメリットがあります。<br /><br />しかし動的に生成したフォーム部品に、イベントハンドラを設定すると、不具合が出ることがあります。したがって、「.innerHTML」ではなく DOM(ドム:Document Object Model) を使ったほうがよいと言われています。<br /><br />DOM を使う方法については、次回に説明します。<br /><br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="http://ajax.pgtop.net/article/85612789.html">
<link>http://ajax.pgtop.net/article/85612789.html</link>
<title>Ajax 選択リストボックスを動的に作成する方法</title>
<description>今回は Ajax を使って、非同期通信で取得した XML データを、「選択リストボックス」にしてみましょう。選択リストボックスは Web サイトでよく使われています。選択リストボックスを使うと、一覧から入力できるようになります。しかもデータベースに連動して動的に変化させる方法を覚えておくと、用途がとても広がります。【1】sample005 フォルダをコピーして sample009 フォルダを作成します。【2】今回は最終的に以下のようなファイルの構成になります。プログラムを一部...</description>
<dc:subject>Step15・選択リストボックスを作成</dc:subject>
<dc:creator>Ajax入門</dc:creator>
<dc:date>2008-02-22T16:50:11+09:00</dc:date>
<content:encoded><![CDATA[
今回は <strong>Ajax</strong> を使って、非同期通信で取得した XML データを、「選択リストボックス」にしてみましょう。<br /><br />選択リストボックスは Web サイトでよく使われています。選択リストボックスを使うと、一覧から入力できるようになります。<br /><br />しかもデータベースに連動して動的に変化させる方法を覚えておくと、用途がとても広がります。<br /><br /><br />【1】sample005 フォルダをコピーして sample009 フォルダを作成します。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-312.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-312-thumbnail2.gif" alt="ajax-312.gif" width="150" height="130" border="0" /></a><br /><br /><br />【2】今回は最終的に以下のようなファイルの構成になります。プログラムを一部変更します。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-313.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-313-thumbnail2.gif" alt="ajax-313.gif" width="150" height="75" border="0" /></a><br /><br />＊index.css に変更はありません。<br />＊「\」はWindowsでは円記号のことです。<br /><br />保存先　C:\phpdev\www\ajax\sample009<br />ファイル名　index.html<br /><div class="pg"><br />&lt;html&gt;<br />&nbsp;&nbsp;&lt;head&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type="text/javascript" src="../lib/prototype.js"&gt;&lt;/script&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type="text/javascript" src="index.js"&gt;&lt;/script&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type="text/javascript" src="pref.js"&gt;&lt;/script&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;link href="index.css" rel="stylesheet" type="text/css"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;pref&lt;/title&gt;<br />&nbsp;&nbsp;&lt;/head&gt;<br />&nbsp;&nbsp;&lt;body&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id="state"&gt;&lt;/div&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id="result"&gt;&lt;/div&gt;<br />&nbsp;&nbsp;&lt;/body&gt;<br />&lt;/html&gt;<br /></div><br /><br />保存先　C:\phpdev\www\ajax\sample009<br />ファイル名　index.js<br /><div class="pg"><br />onload = init;<br />var state;<br />var result;<br /><br />function init() {<br />&nbsp;&nbsp;state = $('state');<br />&nbsp;&nbsp;result = $('result');<br />&nbsp;&nbsp;prefDisp();<br />}<br /><br />function clearDisp() {<br />&nbsp;&nbsp;state.innerHTML = "";<br />&nbsp;&nbsp;result.innerHTML = "";<br />}<br /></div><br /><br />保存先　C:\phpdev\www\ajax\sample009<br />ファイル名　pref.js<br /><div class="pg"><br />function prefDisp() {<br />&nbsp;&nbsp;state.innerHTML = "処理中です・・・&lt;br /&gt;\n";<br />&nbsp;&nbsp;var url = "pref.php";<br />&nbsp;&nbsp;var paramList = "";<br /><br />&nbsp;&nbsp;new Ajax.Request(url,<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method: 'get',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onSuccess: getData,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onFailure: showErrMsg,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: paramList<br />&nbsp;&nbsp;});<br /><br />&nbsp;&nbsp;function getData(data){<br />&nbsp;&nbsp;&nbsp;&nbsp;var response = data.responseXML.getElementsByTagName('Response');<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;var item = response[0].getElementsByTagName('Item');<br />&nbsp;&nbsp;&nbsp;&nbsp;var tmpHtml="";<br />&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;form&gt;&lt;select name='selectPref'&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;option value='0' selected&gt;選択してください。&lt;/option&gt;";<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;for(i = 0; i &lt; item.length; i++){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var prefCd = item[i].getElementsByTagName('PREF_CD');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var prefCdValue = prefCd[0].firstChild.nodeValue;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var prefName = item[i].getElementsByTagName('PREF_NAME');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var prefNameValue = prefName[0].firstChild.nodeValue;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml +="&lt;option value='" + prefCdValue + "'&gt;" + prefNameValue + "&lt;/option&gt;\n";<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;/select&gt;&lt;/form&gt;";<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;result.innerHTML = tmpHtml;<br />&nbsp;&nbsp;&nbsp;&nbsp;state.innerHTML = "データを取得しました。&lt;br /&gt;\n";<br />&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;function showErrMsg(){<br />&nbsp;&nbsp;&nbsp;&nbsp;clearDisp();<br />&nbsp;&nbsp;&nbsp;&nbsp;state.innerHTML = "データを取得できませんでした。&lt;br /&gt;\n";<br />&nbsp;&nbsp;}<br /><br />}<br /></div><br /><br />保存先　C:\phpdev\www\ajax\sample009<br />ファイル名　pref.php<br /><div class="pg"><br />&lt;?php<br />&nbsp;&nbsp;header("Content-type: application/xml");<br />&nbsp;&nbsp;$url = "<a href="http://ws.bzen.net/pgtop/GetPref.php" target="_blank">http://ws.bzen.net/pgtop/GetPref.php</a>";<br />&nbsp;&nbsp;readfile($url);<br />?&gt;<br /></div><br /><br />保存先　C:\phpdev\www\ajax\sample009<br />ファイル名　index.css<br /><div class="pg"><br />#state {<br />&nbsp;&nbsp;font-size:16px;<br />&nbsp;&nbsp;color:#0000cc;<br />&nbsp;&nbsp;margin-top:10px;<br />&nbsp;&nbsp;margin-bottom:10px;<br />}<br /><br />#result {<br />&nbsp;&nbsp;font-size:14px;<br />&nbsp;&nbsp;color:#000000;<br />}<br /></div><br /><br /><br />準備ができたら、Webサーバーを起動して動作を確認してみましょう。<br /><br />【3】C:\phpdev にある「2K-NT-XP-phpdev_start.bat」をダブルクリックして、phpdev を起動します。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-166.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-166-thumbnail2.gif" alt="ajax-166.gif" width="150" height="111" border="0" /></a><br /><br /><br />【4】Firefox を起動して、動作を確認してみましょう。<br /><br /><a href="http://localhost/ajax/sample009/" target="_blank">http://localhost/ajax/sample009/</a><br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-315.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-315-thumbnail2.gif" alt="ajax-315.gif" width="150" height="86" border="0" /></a><br /><br />＊ページを読み込んだ直後にプログラムが動きます。<br /><br /><br />【5】「選択リストボックス」をクリックします。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-316.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-316-thumbnail2.gif" alt="ajax-316.gif" width="150" height="86" border="0" /></a><br /><br /><br />【6】都道府県のリストが表示されるので、好きなものを選択してください。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-317.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-317-thumbnail2.gif" alt="ajax-317.gif" width="150" height="131" border="0" /></a><br /><br /><br />【7】都道府県が選択できました。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-318.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-318-thumbnail2.gif" alt="ajax-318.gif" width="150" height="109" border="0" /></a><br /><br /><br />【8】同様に Internet Explorer でも動作を確認してください。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-314.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-314-thumbnail2.gif" alt="ajax-314.gif" width="127" height="150" border="0" /></a><br /><br /><br />【解説】<br /><br />(1)元になる XML のデータは Web 上のデータベースにあります。<br /><br />まずデータベースのレコードを GetPref.php で XML 形式に加工して出力しています。<br /><a href="http://ws.bzen.net/pgtop/GetPref.php" target="_blank">http://ws.bzen.net/pgtop/GetPref.php</a><br /><br />それを中継プログラムの pref.php で同一ドメイン内にします。そして Ajax の非同期通信で取り込み、JavaScript のプログラムで選択リストボックスを組み立てる仕組みです。<br /><br />データベース → GetPref.php(XML出力) → pref.php(中継) → 選択リストボックス組み立て → 画面に表示<br /><br />この方法のメリットは、データベースのデータが変われば、自動的に選択リストボックスの値にも反映されることです。<br /><br />＊GetPref.php は pref.php の中で呼び出しています。<br />＊サーバーに負荷がかかるため、 GetPref.php は学習目的でのみお使いください。<br /><br /><br />(2)選択リストボックスの用途について<br /><br />例えば選択リストボックスをチェンジした時に、イベントハンドラを設定すれば、都道府県を切り替えた瞬間に、該当する市町村だけを表示するような応用ができます。<br /><br />↓このような使い方( Internet Explorer で確認)<br /><a href="http://ws.bzen.net/tokusan/" target="_blank">全国の特産品検索</a><br /><br />またはネットショップの注文画面で、顧客に住所を入力してもらうときに使うことができます。<br /><br /><br />プログラムの変更点については、次回に詳しく解説します。<br /><br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="http://ajax.pgtop.net/article/80068454.html">
<link>http://ajax.pgtop.net/article/80068454.html</link>
<title>Ajax 動的なXMLの具体例について</title>
<description>今回は Ajax でよく使われる、動的なXMLを使った実用的でわかりやすい例を説明します。全国の市町村は 1900 以上あるのですが、データを一度に全て表示しようとすると、多すぎて大変です。そこで各都道府県ごとの市町村だけを表示できたら便利です。その場合、静的なXMLだと都道府県別に 47 のファイルを用意しなければなりません。しかし動的なXMLなら、プログラミング言語を使い、データベースから条件に合った市町村のみを取得して表示することができます。そのためファイルは1つで済み...</description>
<dc:subject>Step14・動的なXMLの具体例</dc:subject>
<dc:creator>Ajax入門</dc:creator>
<dc:date>2008-01-22T15:16:10+09:00</dc:date>
<content:encoded><![CDATA[
今回は <strong>Ajax</strong> でよく使われる、動的なXMLを使った実用的でわかりやすい例を説明します。<br /><br />全国の市町村は 1900 以上あるのですが、データを一度に全て表示しようとすると、多すぎて大変です。そこで各都道府県ごとの市町村だけを表示できたら便利です。<br /><br />その場合、静的なXMLだと都道府県別に 47 のファイルを用意しなければなりません。<br /><br />しかし動的なXMLなら、プログラミング言語を使い、データベースから条件に合った市町村のみを取得して表示することができます。そのためファイルは1つで済みます。<br /><br />イメージし難いかもしれませんが、実際に見ればすぐにわかります。<br /><br /><br />【1】Internet Explorer を起動して、以下のURLにアクセスします。<br /><br /><a href="http://ws.bzen.net/pgtop/GetCity.php?prefCd=1" target="_blank">http://ws.bzen.net/pgtop/GetCity.php?prefCd=1</a><br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-309.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-309-thumbnail2.gif" alt="ajax-309.gif" width="139" height="150" border="0" /></a><br /><br />北海道の市町村だけが表示されました。<br /><br /><br />【2】次は Webブラウザのアドレスで、URLのパラメータを「8」に変更し、「移動」ボタンをクリックします。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-311.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-311-thumbnail2.gif" alt="ajax-311.gif" width="150" height="147" border="0" /></a><br /><br /><br />【3】今度は東京都の市町村が表示されました。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-310.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-310-thumbnail2.gif" alt="ajax-310.gif" width="140" height="150" border="0" /></a><br /><br /><br />【4】パラメータの数値を 1～47 の範囲で変え、他の都道府県の市町村も表示してみてください。<br /><br /><br />【解説】<br /><br />(1)Webブラウザのアドレスから、URLを入力して表示した場合は、GETメソッドとなります。リンクをクリックして表示した場合もGETメソッドです。<br /><br /><br />(2)「GetCity.php」はプログラミング言語のPHPで書かれています。このプログラムは、GETメソッドでリクエストされると、「prefCd」という名前のパラメータで指定した数値(都道府県)の市町村をデータベースから検索して、XML形式で出力するようになっています。<br /><br />これも簡単なWebサービスと言えます。都道府県を指定すると、市町村データが取得できるサービスです。<br /><br />この仕組みを Ajax のプログラムで利用したのが、最初に紹介したWebサイトです。<br /><a href="http://ws.bzen.net/tokusan/" target="_blank">全国の特産品検索</a><br /><br /><br />(3)GETメソッドを使うメリットは、特にプログラムを書くことなく、URLだけで取得するデータを変化させられることです。POSTメソッドならある程度プログラムを書かなければなりません。<br /><br />楽天Webサービスなどでも、パラメータの数が増えるだけで、GETメソッドの使い方は同じです。そのため初心者のうちはGETメソッドが何かと便利なのです。<br /><br />ただしGETメソッドでは、送信できる情報量に制限があることや、URLに情報が表示されてしまうため、重要な情報のやり取りには向きません。その場合はPOSTメソッドが適しています。<br /><br /><br />(4)Webサービスを利用するだけなら、それほど深い知識はいりません。しかしWebサービスを自分で公開する場合は、データベースとサーバーサイドで動くプログラミング言語の知識が必要です。よく使われているのが、PHPとMySQLの組み合わせです。<br /><br />詳しくは <a href="http://php5.seesaa.net/" target="_blank">PHP初心者入門講座</a> をご覧ください。基本的なことが学べます。<br /><br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="http://ajax.pgtop.net/article/80062247.html">
<link>http://ajax.pgtop.net/article/80062247.html</link>
<title>Ajax 静的なXMLと動的なXMLの違いについて</title>
<description>Ajax のプログラムで非同期通信を行なう時、よく XMLベースのフォーマットが使われますが、それには情報が「静的」なものと「動的」なものがあります。静的 = 変化しない動的 = 変化するまずは以下のリンクをクリックして、比較してみてください。・静的なXMLhttp://ws.bzen.net/pgtop/pref.xml・動的なXMLhttp://ws.bzen.net/pgtop/GetPref.php違いがわかりましたか？表示されているデータの内容はまったく同じですが、...</description>
<dc:subject>Step13・静的なXMLと動的なXML</dc:subject>
<dc:creator>Ajax入門</dc:creator>
<dc:date>2008-01-22T14:21:06+09:00</dc:date>
<content:encoded><![CDATA[
<strong>Ajax</strong> のプログラムで非同期通信を行なう時、よく XMLベースのフォーマットが使われますが、それには情報が「静的」なものと「動的」なものがあります。<br /><br />静的 = 変化しない<br />動的 = 変化する<br /><br />まずは以下のリンクをクリックして、比較してみてください。<br /><br />・静的なXML<br /><a href="http://ws.bzen.net/pgtop/pref.xml" target="_blank">http://ws.bzen.net/pgtop/pref.xml</a><br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-307.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-307-thumbnail2.gif" alt="ajax-307.gif" width="150" height="143" border="0" /></a><br /><br />・動的なXML<br /><a href="http://ws.bzen.net/pgtop/GetPref.php" target="_blank">http://ws.bzen.net/pgtop/GetPref.php</a><br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-308.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-308-thumbnail2.gif" alt="ajax-308.gif" width="140" height="150" border="0" /></a><br /><br />違いがわかりましたか？<br />表示されているデータの内容はまったく同じですが、実は大きな違いがあります。<br /><br />よく見るとファイル名の拡張子が、静的なXMLの場合は「.xml」、動的なXMLの場合は「.php」になっています。<br /><br />静的なXMLはデータをテキストエディタで書いてあるだけなので変化することはありません。変更したい場合はテキストエディタで再編集する必要があります。<br /><br />それに対し動的なXMLのほうは、データベース(MySQL)に蓄積されたデータを、プログラミング言語(PHP)を使って出力していますので、自由自在に変化させることができます。<br /><br />拡張子が「.php」でも、都道府県のような場合はデータ数が少ないし、変わることがありませんから、違いがわかり難いですね。でもこれが基礎になります。<br /><br />次回は動的なXMLの具体的な活用例を紹介します。<br /><br /><br />【解説】<br /><br />(1)Ajax の非同期通信には XMLベースのフォーマット以外に、テキストやHTMLなども利用できます。XML形式の場合は「タグでデータに意味付けができる」ので、プログラムの中で利用しやすいです。そのため例題でよく使っています。<br /><br /><br />(2)動的なXMLの出力には、PHP以外にもサーバーサイドで動くプログラミング言語が使えます。Java や Perl などもよく使われています。データベースは MySQL のほかに PostgreSQL がよく使われています。<br /><br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="http://ajax.pgtop.net/article/79289679.html">
<link>http://ajax.pgtop.net/article/79289679.html</link>
<title>Ajax プログラムを自作することのメリットについて。</title>
<description>今回は Ajax のプログラムを自作することのメリットについて考えてみたいと思います。その前に少し補足すると、前回までに作成した簡易RSSリーダーは、RSS1.0対応です。RSS1.0ならそのまま動きますが、 RSS2.0、RDF、Atom、XML の場合は取得するデータの形式に合わせて変更が必要です。既成のRSSリーダーなら、ほとんどのXMLフォーマットに対応しているし、さらに高機能です。なので今さらRSSリーダーを自作するまでもありません。もちろん学習用の例題として適して...</description>
<dc:subject>Step12・プログラムを自作するメリット</dc:subject>
<dc:creator>Ajax入門</dc:creator>
<dc:date>2008-01-18T16:41:15+09:00</dc:date>
<content:encoded><![CDATA[
今回は <strong>Ajax</strong> のプログラムを自作することのメリットについて考えてみたいと思います。<br /><br />その前に少し補足すると、前回までに作成した簡易RSSリーダーは、RSS1.0対応です。RSS1.0ならそのまま動きますが、 RSS2.0、RDF、Atom、XML の場合は取得するデータの形式に合わせて変更が必要です。<br /><br />既成のRSSリーダーなら、ほとんどのXMLフォーマットに対応しているし、さらに高機能です。なので今さらRSSリーダーを自作するまでもありません。<br /><br />もちろん学習用の例題として適していたから取り上げたのですが、RSSリーダー自体を作ることが目的ではないのです。<br /><br />学んでいただきたかったのは、「複数のコンピュータによるデータのやり取り」であり「公開されている膨大なデータの活用」、「データをいかに結びつけるか」なのです。<br /><br />例えば自作した簡易RSSリーダーは、RSSフィードを読み込んで表示しましたが、これはまだ点の活用レベルです。他のWebサイトの情報とは結びついていません。<br /><br />点　→　線　→　面<br /><br />ネット上に点在している情報を結び付けて「線」や「面」の形に組み立てることで、新しい付加価値を作り出すことのほうが、面白くて楽しいのです。<br /><br />では具体的な例を挙げてみます。現在検索されている最新のキーワードから、すぐにネットショップの商品を検索できるようにしてみるとどうでしょう。<br /><br />もともと最新の検索キーワードとネットショップの商品情報は、別の情報でありつながっていません。これをプログラムを使ってつなげてみると以下のようになります。どれかリンクをクリックしてみてください。(Internet Explorer で確認)<br /><br />・楽天Webサービスと連携した場合<br /><div class="pg"><br />2008-01-17T21:45:02+09:00　:<a href='http://ws.bzen.net/rakutenkw/index.php?keyword=%E3%82%B7%E3%83%A3%E3%83%88%E3%83%AC%E3%83%BC%E3%82%BC' target='_blank'>シャトレーゼ</a><br /><br />2008-01-18T14:59:24+09:00　:<a href='http://ws.bzen.net/rakutenkw/index.php?keyword=%E8%A6%B3%E8%91%89%E6%A4%8D%E7%89%A9' target='_blank'>観葉植物</a><br /><br />2008-01-18T15:04:53+09:00　:<a href='http://ws.bzen.net/rakutenkw/index.php?keyword=%E8%8A%B1%E7%B2%89%E7%97%87' target='_blank'>花粉症</a><br /><br /></div><br /><br />・電脳卸Webサービスと連携した場合<br /><div class="pg"><br />2008-01-17T21:45:41+09:00　:<a href='http://ws.bzen.net/d-064/dsearch.php?sword=石鹸' target='_blank'>石鹸</a><br /><br />2008-01-17T21:47:17+09:00　:<a href='http://ws.bzen.net/d-064/dsearch.php?sword=お茶' target='_blank'>お茶</a><br /><br />2008-01-17T21:42:58+09:00　:<a href='http://ws.bzen.net/d-064/dsearch.php?sword=英会話' target='_blank'>英会話</a><br /><br /></div><br /><br />イメージが湧きましたか？リンクしたキーワードで商品が検索されていますね。これは二つの情報を線で結んだ活用レベルです。最新キーワードを元に自動的にネットショップへのリンクを作成する仕組みです。<br /><br />さらにいろんなWebサービスを同時に組み合わせることで、複数のネットショップを横断検索することもできます。そうすると面の活用レベルとなり、膨大な情報を利用して新たな付加価値を生み出すことになります。<br /><br />Ajaxのプログラムでは、このような情報の組み立てが簡単にできるのです。自分で作ったシステムなら、アイデア次第で可能性が広がることが、プログラムを自作するメリットです。<br /><br />上記のプログラムはあくまで「例え」であり、本当に連携しているわけではありません。最新キーワードは仮定です。しかし楽天、電脳卸の部分は本物です。本当に買い物することができます。<br /><br />実際にデータを使うときは、情報を提供しているサイトの利用規約に従う必要があります。商用利用や取得したデータから統計をとって公開することを禁止している場合もありますので注意してください。<br /><br /><br />【ワンポイント】<br /><br />電脳卸や楽天はWebサービスで商品情報を公開しています。楽天は会員登録していればすぐに使えます。一度でも楽天のサービスを何か利用したことがあれば、会員登録されているはずです。<br /><br />電脳卸は販売店登録(無料)すると、Webサービスを無料で利用できます。販売店とはアフィリエイターのことです。アフィリエイトは成果に応じて報酬がもらえる仕組みです。<br />電脳卸の <a href='http://www.d-064.com/touroku/han_touroku.php?hid=2673#11' target='_blank'>販売店登録はこちら</a> から行なえます。<br /><br />電脳卸や楽天のWebサービスを活用したプログラミングについては、この「Ajax初心者入門講座」の続編で行ないます。まだ販売店登録していない方は、今のうちに登録してログインできるように準備しておいてください。<br /><br />最近では電脳卸、楽天、Amazonなど多くのサイトがWebサービスを提供しています。ではどのようなメリットがあるのでしょうか？<br /><br />それは多くの人にシステムを開発してもらうことで、販路を広げるチャンスが生まれるからです。<br /><br />アフィリエイター側のメリットは、Webサービスを利用してシステムを開発することで、膨大な商品情報を簡単に利用できることです。元のサイトにはないような「商品の見せ方を工夫」すれば新たな価値になります。しかも成果に応じて報酬がもらえるのです。<br /><br />ネットショップを利用していて「不便だな」と感じた時はチャンスです。それをWebサービスを利用したプログラミングで解決できれば、面白いことになるかも。<br /><br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="http://ajax.pgtop.net/article/79119141.html">
<link>http://ajax.pgtop.net/article/79119141.html</link>
<title>Ajax sample008で使用したプログラムの解説。</title>
<description>今回は sample008 で使用した Ajax のプログラムについて詳しく解説します。追加や変更は少しだけで済みます。最小限の変更で複数のRSSフィードが読み込めるようになっています。■index.html側(1)flash.js を読み込む部分を追加しました。&amp;lt;script type="text/javascript" src="flash.js"&amp;gt;&amp;lt;/script&amp;gt;(2)ニュース速報を表示するための div要素を追加しました。&amp;lt;div id...</description>
<dc:subject>Step11・sample008の解説</dc:subject>
<dc:creator>Ajax入門</dc:creator>
<dc:date>2008-01-17T21:29:19+09:00</dc:date>
<content:encoded><![CDATA[
今回は sample008 で使用した <strong>Ajax</strong> のプログラムについて詳しく解説します。追加や変更は少しだけで済みます。最小限の変更で複数のRSSフィードが読み込めるようになっています。<br /><br /><br />■index.html側<br /><br />(1)flash.js を読み込む部分を追加しました。<br /><br />&lt;script type="text/javascript" src="flash.js"&gt;&lt;/script&gt;<br /><br /><br />(2)ニュース速報を表示するための div要素を追加しました。<br /><br />&lt;div id="result2"&gt;&lt;/div&gt;<br /><br /><br />■index.js側<br /><br />(1)変数を宣言している部分に新しい変数を追加しました。<br /><br />var result2;<br /><br />＊この変数の有効範囲はプログラム全体です。<br /><br /><br />(2)ボタンをクリックした時のイベントハンドラの設定を変更しました。<br /><br />$("btnData").onclick = newkwDisp;<br />↓<br />$("btnData").onclick = function (){newkwDisp();flashDisp();}<br /><br />呼び出す関数を無名関数にし、その中で複数の関数を呼び出すようにしました。関数内では関数名の後に()カッコが付くことに注意してください。<br /><br />これは以下のように書くこともできます。無名関数は呼び出したその場ですぐに定義していることがわかります。<br /><br />$("btnData").onclick = function (){<br />&nbsp;&nbsp;newkwDisp();<br />&nbsp;&nbsp;flashDisp();<br />}<br /><br />中に書くプログラムが多い場合は、この書き方のほうがわかりやすいです。<br /><br /><br />(3)変数で参照できるようにしている部分に1行追加しました。<br /><br />result2 = $('result2');<br /><br />＊$()関数は getElementById() のショートカットで、prototype.js の機能です。<br /><br /><br />(4)「クリア」ボタンをクリックした時に呼び出される関数に1行追加しました。<br /><br />result2.innerHTML = "";<br /><br /><br />■newkw.js側<br /><br />変更はありません。<br /><br /><br />■flash.js側<br /><br />(1)関数名を flashDisp に変更しました。<br /><br />function flashDisp() {<br />&nbsp;&nbsp;省略<br />}<br /><br /><br />(2)中継プログラムのURLを変更しました。<br /><br />var url = "flash.php";<br /><br /><br />(3)div要素に結果を出力している部分を変更しました。<br /><br />result2.innerHTML = tmpHtml;<br /><br /><br />■index.css側<br /><br />(1)result2要素のCSSを指定しました。<br /><br />#result, #result2 {<br />&nbsp;&nbsp;font-size:14px;<br />&nbsp;&nbsp;color:#000000;<br />}<br /><br />id名を「,」カンマを用いて区切ると、複数要素の属性を一度に指定することができます。<br /><br /><br />■newkw.php側<br /><br />変更はありません。<br /><br /><br />■flash.php側<br /><br />flash.phpは中継プログラム(スクリプト)です。<br /><br />(1)取得するURLを変更しました。<br /><br />$url = "<a href="http://mainichi.jp/rss/etc/flash.rss" target="_blank">http://mainichi.jp/rss/etc/flash.rss</a>";<br /><br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="http://ajax.pgtop.net/article/79086638.html">
<link>http://ajax.pgtop.net/article/79086638.html</link>
<title>Ajax 複数のRSSフィードを取得する方法。</title>
<description>Ajax を使って作った『簡易RSSリーダー』に、複数のRSSフィードを読み込む機能を加えてみましょう。もちろん既成のRSSリーダーには及びませんが、自分で作ったシステムは細かい調整や改良ができるので、アイデア次第では可能性が広がります。今回取り込むRSSフィードは、毎日新聞のサイトで公開しているニュース速報です。ニュース速報(総合)のRSShttp://mainichi.jp/rss/etc/flash.rss＊商業目的での利用は禁止されていますのでご注意ください。このRS...</description>
<dc:subject>Step10・複数のRSSフィードを取得する</dc:subject>
<dc:creator>Ajax入門</dc:creator>
<dc:date>2008-01-17T18:03:15+09:00</dc:date>
<content:encoded><![CDATA[
<strong>Ajax</strong> を使って作った『簡易RSSリーダー』に、複数のRSSフィードを読み込む機能を加えてみましょう。<br /><br />もちろん既成のRSSリーダーには及びませんが、自分で作ったシステムは細かい調整や改良ができるので、アイデア次第では可能性が広がります。<br /><br />今回取り込むRSSフィードは、毎日新聞のサイトで公開しているニュース速報です。<br /><br />ニュース速報(総合)のRSS<br /><a href="http://mainichi.jp/rss/etc/flash.rss" target="_blank">http://mainichi.jp/rss/etc/flash.rss</a><br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-295.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-295-thumbnail2.gif" alt="ajax-295.gif" width="150" height="100" border="0" /></a><br /><br />＊商業目的での利用は禁止されていますのでご注意ください。<br /><br />このRSSフィードのタグ名は前回と同じなので、これまでに作ったプログラムをコピーして、少し変更するだけでできます。<br /><br />今回も動作確認に専念してほしいので、プログラムの解説は次回に行ないます。まずはプログラムが動くようにして、全体の処理の流れをつかんでください。<br /><br /><br />【1】sample007 フォルダをコピーして sample008 フォルダを作成します。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-304.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-304-thumbnail2.gif" alt="ajax-304.gif" width="150" height="112" border="0" /></a><br /><br /><br />【2】sample008 フォルダを開き、以下のようにファイルをコピーしてください。<br /><br />newkw.js　→　コピーしてファイル名を flash.js にする<br />newkw.php　→　コピーしてファイル名を flash.php にする<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-298.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-298-thumbnail2.gif" alt="ajax-298.gif" width="150" height="88" border="0" /></a><br /><br />＊元のファイルも使います。<br /><br /><br />【3】プログラムを少し書き換えます。一見多いようですがよく見ると変更はほんの一部です。newkw.js と newkw.php に変更はありませんので省略します。<br /><br />＊newkw.php と flash.php は SHIFT-JIS、それ以外は UTF-8 形式で保存してください。<br />＊「\」はWindowsでは円記号のことです。<br /><br />保存先　C:\phpdev\www\ajax\sample008<br />ファイル名　index.html<br /><div class="pg"><br />&lt;html&gt;<br />&nbsp;&nbsp;&lt;head&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type="text/javascript" src="../lib/prototype.js"&gt;&lt;/script&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type="text/javascript" src="index.js"&gt;&lt;/script&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type="text/javascript" src="newkw.js"&gt;&lt;/script&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type="text/javascript" src="flash.js"&gt;&lt;/script&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;link href="index.css" rel="stylesheet" type="text/css"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;最新キーワード、ニュース速報&lt;/title&gt;<br />&nbsp;&nbsp;&lt;/head&gt;<br />&nbsp;&nbsp;&lt;body&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="button" id="btnData" value="データ取得" /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="button" id="btnClear" value="クリア" /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id="state"&gt;&lt;/div&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;■最新キーワード&lt;/p&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id="result"&gt;&lt;/div&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;■ニュース速報&lt;/p&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;div id="result2"&gt;&lt;/div&gt;<br />&nbsp;&nbsp;&lt;/body&gt;<br />&lt;/html&gt;<br /></div><br /><br />保存先　C:\phpdev\www\ajax\sample008<br />ファイル名　index.js<br /><div class="pg"><br />onload = init;<br />var state;<br />var result;<br />var result2;<br /><br />function init() {<br />&nbsp;&nbsp;$("btnData").onclick = function (){newkwDisp();flashDisp();}<br />&nbsp;&nbsp;$("btnClear").onclick = clearDisp;<br />&nbsp;&nbsp;state = $('state');<br />&nbsp;&nbsp;result = $('result');<br />&nbsp;&nbsp;result2 = $('result2');<br />}<br /><br />function clearDisp() {<br />&nbsp;&nbsp;state.innerHTML = "";<br />&nbsp;&nbsp;result.innerHTML = "";<br />&nbsp;&nbsp;result2.innerHTML = "";<br />}<br /></div><br /><br />保存先　C:\phpdev\www\ajax\sample008<br />ファイル名　flash.js<br /><div class="pg"><br />function flashDisp() {<br />&nbsp;&nbsp;state.innerHTML = "処理中です・・・&lt;br /&gt;\n";<br />&nbsp;&nbsp;var url = "flash.php";<br />&nbsp;&nbsp;var paramList = "time=" + (new Date().getTime());<br /><br />&nbsp;&nbsp;new Ajax.Request(url,<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method: 'get',<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onSuccess: getData,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onFailure: showErrMsg,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters: paramList<br />&nbsp;&nbsp;});<br /><br />&nbsp;&nbsp;function getData(data){<br />&nbsp;&nbsp;&nbsp;&nbsp;var rdf ="<a href="http://www.w3.org/1999/02/22-rdf-syntax-ns#" target="_blank">http://www.w3.org/1999/02/22-rdf-syntax-ns#</a>";<br />&nbsp;&nbsp;&nbsp;&nbsp;var response;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if(document.all){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response = data.responseXML.getElementsByTagName('rdf:RDF');<br />&nbsp;&nbsp;&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response = data.responseXML.getElementsByTagNameNS(rdf,'RDF');<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;var item = response[0].getElementsByTagName('item');<br />&nbsp;&nbsp;&nbsp;&nbsp;var tmpHtml="";<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;for(i = 0; i &lt; item.length; i++){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var title = item[i].getElementsByTagName('title');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var titleValue = title[0].firstChild.nodeValue;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var link = item[i].getElementsByTagName('link');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var linkValue = link[0].firstChild.nodeValue;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var dc ="<a href="http://purl.org/dc/elements/1.1/" target="_blank">http://purl.org/dc/elements/1.1/</a>";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var dcDate;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(document.all){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dcDate = item[i].getElementsByTagName('dc:date');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dcDate = item[i].getElementsByTagNameNS(dc,'date');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var dcDateValue = dcDate[0].firstChild.nodeValue;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += dcDateValue + "　:"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;a href='" + linkValue + "' target='_blank'&gt;" + titleValue + "&lt;/a&gt;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpHtml += "&lt;br /&gt;\n";<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;result2.innerHTML = tmpHtml;<br />&nbsp;&nbsp;&nbsp;&nbsp;state.innerHTML = "データを取得しました。&lt;br /&gt;\n";<br /><br />&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;function showErrMsg(){<br />&nbsp;&nbsp;&nbsp;&nbsp;clearDisp();<br />&nbsp;&nbsp;&nbsp;&nbsp;state.innerHTML = "データを取得できませんでした。&lt;br /&gt;\n";<br />&nbsp;&nbsp;}<br /><br />}<br /></div><br /><br />保存先　C:\phpdev\www\ajax\sample008<br />ファイル名　index.css<br /><div class="pg"><br />#state {<br />&nbsp;&nbsp;font-size:16px;<br />&nbsp;&nbsp;color:#0000cc;<br />&nbsp;&nbsp;margin-top:10px;<br />&nbsp;&nbsp;margin-bottom:10px;<br />}<br /><br />#result, #result2 {<br />&nbsp;&nbsp;font-size:14px;<br />&nbsp;&nbsp;color:#000000;<br />}<br /></div><br /><br />保存先　C:\phpdev\www\ajax\sample008<br />ファイル名　flash.php<br /><div class="pg"><br />&lt;?php<br />&nbsp;&nbsp;header("Content-type: application/xml");<br />&nbsp;&nbsp;$url = "<a href="http://mainichi.jp/rss/etc/flash.rss" target="_blank">http://mainichi.jp/rss/etc/flash.rss</a>";<br />&nbsp;&nbsp;readfile($url);<br />?&gt;<br /></div><br /><br /><br />準備ができたら、Webサーバーを起動して動作確認してみましょう。<br /><br />【4】C:\phpdev にある「2K-NT-XP-phpdev_start.bat」をダブルクリックして、phpdev を起動します。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-166.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-166-thumbnail2.gif" alt="ajax-166.gif" width="150" height="111" border="0" /></a><br /><br /><br />【5】まずは中継プログラムが、きちんと動いているか確認します。<br /><br /><a href="http://localhost/ajax/sample008/flash.php" target="_blank">http://localhost/ajax/sample008/flash.php</a><br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-299.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-299-thumbnail2.gif" alt="ajax-299.gif" width="150" height="96" border="0" /></a><br /><br />＊中継プログラムの確認は重要です。<br /><br /><br />【6】Firefox を起動して、動作するか確認します。<br /><br /><a href="http://localhost/ajax/sample008/" target="_blank">http://localhost/ajax/sample008/</a><br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-301.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-301-thumbnail2.gif" alt="ajax-301.gif" width="150" height="90" border="0" /></a><br /><br /><br />【7】「データ取得」ボタンをクリックします。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-302.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-302-thumbnail2.gif" alt="ajax-302.gif" width="150" height="90" border="0" /></a><br /><br /><br />【8】データが表示されました。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-303.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-303-thumbnail2.gif" alt="ajax-303.gif" width="117" height="150" border="0" /></a><br /><br />最新キーワードは頻繁に更新されますが、ニュース速報は更新間隔が長いので、すぐには反映されません。<br /><br />＊通信相手のサーバーに負担をかけないように、適当な間隔を置いてクリックしてください。<br /><br /><br />【9】ニュース速報の文字リンクをクリックします。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-305.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-305-thumbnail2.gif" alt="ajax-305.gif" width="150" height="124" border="0" /></a><br /><br /><br />【10】毎日新聞の記事が表示されました。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-306.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-306-thumbnail2.gif" alt="ajax-306.gif" width="150" height="113" border="0" /></a><br /><br />毎日新聞はRSSフィードを提供することで、RSSリーダーなどからのアクセスを増やせるわけですね。<br /><br /><br />【11】同様に Internet Explorer でも動作確認してください。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-300.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-300-thumbnail2.gif" alt="ajax-300.gif" width="117" height="150" border="0" /></a><br /><br /><br />【解説】<br /><br />(1)今回は別々のサイトからRSSフィードを取得している点がポイントです。異なるコンピュータ同士が、XML形式のデータを介してつながり、同じ画面上に出力しているわけです。<br /><br /><br />(2)RSSにはいくつかバージョンがあり、これまでに使っていたのは RSS1.0 です。同じ種類のRSSなら今回のような方法で扱えます。取り込むRSSフィードを3つ、4つと増やしても要領は同じです。<br /><br />しかし RSS2.0、RDF、Atom、XML の場合は、取得したデータを解析する部分のプログラムを少し変更する必要があります。<br /><br /><br />(3)newkw.js と flash.js は統合することもできますが、<br />・表示形式を個別に変えたい<br />・異なるXMLフォーマットを利用したい<br />など、細かなカスタマイズをするような場合は、分けていたほうが便利です。<br /><br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="http://ajax.pgtop.net/article/79032931.html">
<link>http://ajax.pgtop.net/article/79032931.html</link>
<title>Ajax IEのキャッシュを無効にする方法。</title>
<description>Internet Explorer で Ajax のプログラムを使って、XML形式のファイルを読み込んだ場合、2回目からはキャッシュしたデータが表示されてしまう問題がありました。Webブラウザでキャッシュしないようにするには、いくつか方法があります。・メタタグを使う(no-cache、expires)ブラウザにより動作が異なることがあるようなので、確実とはいえません。・POSTメソッドにする初心者のうちはGETメソッドのほうが便利なことがあります。Webサービスを利用するとき...</description>
<dc:subject>Step9・IEのキャッシュを無効にする</dc:subject>
<dc:creator>Ajax入門</dc:creator>
<dc:date>2008-01-17T11:58:17+09:00</dc:date>
<content:encoded><![CDATA[
Internet Explorer で <strong>Ajax</strong> のプログラムを使って、XML形式のファイルを読み込んだ場合、2回目からはキャッシュしたデータが表示されてしまう問題がありました。<br /><br />Webブラウザでキャッシュしないようにするには、いくつか方法があります。<br /><br />・メタタグを使う(no-cache、expires)<br />ブラウザにより動作が異なることがあるようなので、確実とはいえません。<br /><br />・POSTメソッドにする<br />初心者のうちはGETメソッドのほうが便利なことがあります。Webサービスを利用するとき、GETメソッドならプログラムを書かなくても、URLを入力するだけでデータの表示を確認できます。これについては後に説明します。<br /><br />どれも一長一短がありますが、実は JavaScript が使える環境なら簡単な方法があります。キャッシュを無効にするというより、回避するといったほうがいいかもしれません。<br /><br />元々Webブラウザがキャッシュするのは、リクエストしたURLが同じ時です。したがってURLにパラメータを加えて、パラメータの値が毎回変わるようにすればよいのです。以下の数字の部分が毎回変わると考えてください。<br /><br />newkw.php?time=1200490671468<br /><br />では実際にどうするのか説明します。まずは数値を変化させる簡単なサンプルで仕組みを理解しましょう。<br /><br /><br />【1】sample006 フォルダをコピーして sample007 フォルダを作成します。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-285.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-285-thumbnail2.gif" alt="ajax-285.gif" width="150" height="107" border="0" /></a><br /><br /><br />【2】sample007 フォルダを開き、「getTime.html」を新規に作成します。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-286.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-286-thumbnail2.gif" alt="ajax-286.gif" width="150" height="99" border="0" /></a><br /><br />＊UTF-8 形式で保存してください。<br />＊「\」はWindowsでは円記号のことです。<br /><br />保存先　C:\phpdev\www\ajax\sample007<br />ファイル名　getTime.html<br /><div class="pg"><br />&lt;html&gt;<br />&nbsp;&nbsp;&lt;head&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;getTime&lt;/title&gt;<br />&nbsp;&nbsp;&lt;/head&gt;<br />&nbsp;&nbsp;&lt;body&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;script type="text/javascript"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.write(new Date());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.write("&lt;br /&gt;");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.write(new Date().toLocaleString());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.write("&lt;br /&gt;");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.write(new Date().getTime());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// --&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/script&gt;<br />&nbsp;&nbsp;&lt;/body&gt;<br />&lt;/html&gt;<br /></div><br /><br /><br />準備ができたら、Webサーバーを起動して動作確認してみましょう。<br /><br />【3】C:\phpdev にある「2K-NT-XP-phpdev_start.bat」をダブルクリックして、phpdev を起動します。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-166.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-166-thumbnail2.gif" alt="ajax-166.gif" width="150" height="111" border="0" /></a><br /><br /><br />【4】今回は Internet Explorer を起動して動作確認します。<br /><br /><a href="http://localhost/ajax/sample007/getTime.html" target="_blank">http://localhost/ajax/sample007/getTime.html</a><br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-287.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-287-thumbnail2.gif" alt="ajax-287.gif" width="150" height="110" border="0" /></a><br /><br />三通りの日付時刻が表示されましたね。<br /><br /><br />【5】ブラウザの「更新」ボタンをクリックします。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-288.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-288-thumbnail2.gif" alt="ajax-288.gif" width="150" height="110" border="0" /></a><br /><br /><br />【6】クリックする度に時刻がどんどん変わります。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-289.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-289-thumbnail2.gif" alt="ajax-289.gif" width="150" height="118" border="0" /></a><br /><br />特に3番目の値の変化に注目してください。この値をURLのパラメータに使います。<br /><br /><br />動作を確認したら、この機能を簡易RSSリーダーに組み込んでみましょう。<br /><br />【7】newkw.js を少しだけ変更します。<br /><br />var paramList = "";<br />↓<br />var paramList = "time=" + (new Date().getTime());<br /><br />変更はたったこれだけです。<br /><br /><br />【8】Internet Explorer  を起動して動作確認します。<br /><br /><a href="http://localhost/ajax/sample007/" target="_blank">http://localhost/ajax/sample007/</a><br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-290.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-290-thumbnail2.gif" alt="ajax-290.gif" width="150" height="112" border="0" /></a><br /><br /><br />【9】「データ取得」ボタンをクリックします。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-291.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-291-thumbnail2.gif" alt="ajax-291.gif" width="150" height="112" border="0" /></a><br /><br /><br />【10】データが表示されました。ここまでは今までと同じですね。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-292.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-292-thumbnail2.gif" alt="ajax-292.gif" width="122" height="150" border="0" /></a><br /><br /><br />【11】ではもう一度「データ取得」ボタンをクリックしてください。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-293.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-293-thumbnail2.gif" alt="ajax-293.gif" width="122" height="150" border="0" /></a><br /><br /><br />【12】新しいデータが表示されました。時間とキーワードがどんどん変わりますね。<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-294.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-294-thumbnail2.gif" alt="ajax-294.gif" width="122" height="150" border="0" /></a><br /><br />＊通信相手のサーバーに負担をかけないように、適当な間隔を置いてクリックしてください。<br /><br />これで Internet Explorer でも常に新しいデータを取得できるようになりました。プログラムを変更したので、念のため Firefox でも動作確認してください。<br /><br /><br />【解説】<br /><br />(1)今回は簡単な動作テストだったので、「getTime.html」では HTML の中に直接 JavaScript のプログラムを書きました。<br /><br />しかし JavaScript に未対応のブラウザの場合、プログラムの部分を画面に表示してしまいます。そこでプログラム全体を &lt;!-- と // --&gt; で囲んで、もしブラウザが未対応の場合はコメントにして表示しないようにしています。これはよく使われる書き方です。<br /><br /><br />(2)document.write はブラウザの画面に、引数に指定した文字列や値を書込みます。引数には文字列や値以外に、オブジェクトや関数が使われることもあります。その場合は処理結果が表示されます。<br /><br /><br />(3)プログラムと表示は以下のように対応しています。<br /><br />document.write(new Date());<br />Wed Jan 16 23:11:18 UTC+0900 2008<br />new Date() は引数に指定した時刻を表す、日付オブジェクトを生成します。引数を省略した場合は現在の時刻となります。<br /><br /><br />document.write(new Date().toLocaleString());<br />2008年1月16日 23:11:18<br />toLocaleString() メソッドは、日付オブジェクトを現地時刻を表す文字列に変換します。文字列の表示形式はWebブラウザやバージョンによって異なります。 toString() メソッドも使えます。<br /><br />上記のプログラムは分かりやすく書くと以下のようになります。<br /><br />d = new Date();<br />document.write(d.toLocaleString());<br />↓省略<br />document.write((new Date()).toLocaleString());<br />↓さらに省略<br />document.write(new Date().toLocaleString());<br /><br />JavaScript にはオブジェクトに対する処理を定義した「メソッド」があらかじめ用意されています。オブジェクトの後にメソッドを書くことで処理結果が得られます。今回の例では日付オブジェクトの生成と同時にメソッドも指定した書き方です。<br /><br /><br />document.write(new Date().getTime());<br />1200492678562<br />getTime() メソッドは 1970年1月1日0時0分0秒（UTC：世界標準時刻）からの経過ミリ秒を表します。値は 1/1000秒ごとに変化します。この値をパラメータに使うことで、リクエストするURLがいつも新しくなります。<br /><br /><br />(4)パラメータの書き方について<br /><br />動的なURLを作成するとき、通常は「?」の後にパラメータの組み合わせを書いていきます。<br />newkw.php?time=1200490671468<br /><br />「time=1200490671468」が一つの組み合わせです。パラメータが複数ある時は「&」でつなげることができます。<br /><br />しかし prototype.js を使っていますので、変数に組み合わせを代入するだけで、URLを組み立ててくれます。そのため「?」は不要です。<br /><br />var url = "newkw.php";<br />var paramList = "time=" + (new Date().getTime());<br /><br />new Ajax.Request(url,<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;method: 'get',<br />&nbsp;&nbsp;&nbsp;&nbsp;onSuccess: getData,<br />&nbsp;&nbsp;&nbsp;&nbsp;onFailure: showErrMsg,<br />&nbsp;&nbsp;&nbsp;&nbsp;parameters: paramList<br />});<br /><br /><br />(5)渡したパラメータはリクエスト先のプログラムで利用することができます。つまり JavaScript から PHP にデータが渡せますが、今回は特に使っていません。ただ URL を変化させているだけです。<br /><br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="http://ajax.pgtop.net/article/78888653.html">
<link>http://ajax.pgtop.net/article/78888653.html</link>
<title>Ajax sample006で使用したプログラムの解説。</title>
<description>今回は sample006 で使用した Ajax のプログラムについて詳しく解説します。これまでに学んだプログラムとほとんど同じなので、変更した部分を中心に解説します。またXML名前空間を扱う部分と、クロスブラウザ対応にするところは新しいので、そこに重点を置いて学んでください。基本的な解説は既に sample003 で行なっています。そちらも参考にしてください。Step14・sample003の解説http://ajax.pgtop.net/category/4479851-...</description>
<dc:subject>Step8・sample006の解説</dc:subject>
<dc:creator>Ajax入門</dc:creator>
<dc:date>2008-01-16T17:56:38+09:00</dc:date>
<content:encoded><![CDATA[
今回は sample006 で使用した <strong>Ajax</strong> のプログラムについて詳しく解説します。これまでに学んだプログラムとほとんど同じなので、変更した部分を中心に解説します。<br /><br />またXML名前空間を扱う部分と、クロスブラウザ対応にするところは新しいので、そこに重点を置いて学んでください。<br /><br />基本的な解説は既に sample003 で行なっています。そちらも参考にしてください。<br />Step14・sample003の解説<br /><a href="http://ajax.pgtop.net/category/4479851-1.html" target="_blank">http://ajax.pgtop.net/category/4479851-1.html</a><br /><br /><br />■index.html側<br /><br />(1)外部ファイルとして記述した JavaScript のファイル名を newkw.js に変更しました。<br /><br />&lt;script type="text/javascript" src="newkw.js"&gt;&lt;/script&gt;<br /><br /><br />■index.js側<br /><br />(1)イベントハンドラの設定で、呼び出す関数を newkwDisp に変更しました。<br /><br />$("btnData").onclick = newkwDisp;<br /><br /><br />■index.css<br /><br />変更はありません。<br /><br /><br />■newkw.php<br /><br />newkw.phpは中継プログラム(スクリプト)です。<br /><br />(1)取得するURLを変更しました。<br /><br />$url = "<a href="http://search.goo.ne.jp/rss/newkw.rdf" target="_blank">http://search.goo.ne.jp/rss/newkw.rdf</a>";<br /><br /><br />■newkw.js側<br /><br />(1)関数名を newkwDisp に変更しました。<br /><br />function newkwDisp() {<br />&nbsp;&nbsp;省略<br />}<br /><br /><br />(2)中継プログラムのURLを変更しました。<br /><br />var url = "newkw.php";<br /><br /><br />(3)接頭辞に対応したURIを変数に代入している部分です。<br /><br />var rdf ="<a href="http://www.w3.org/1999/02/22-rdf-syntax-ns#" target="_blank">http://www.w3.org/1999/02/22-rdf-syntax-ns#</a>";<br /><br />URIはXMLドキュメントの最初の部分に定義されています。<br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-279.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-279-thumbnail2.gif" alt="ajax-279.gif" width="150" height="120" border="0" /></a><br /><br />＊どうしても URI がわからない場合は、「*」アスタリスクを使うこともできますが、その場合は「全て」ということになります。<br /><br />var url = "*";<br /><br /><br />(4)通信で取得したデータから rdf:RDF という要素を取り出している部分です。<br /><br />var response;<br /><br />if(document.all){<br />&nbsp;&nbsp;response = data.responseXML.getElementsByTagName('rdf:RDF');<br />}else{<br />&nbsp;&nbsp;response = data.responseXML.getElementsByTagNameNS(rdf,'RDF');<br />}<br /><br />＊1つしかなくても response は配列になります。<br /><br />rdf:RDF を取り出すイメージ<br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-280.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-280-thumbnail2.gif" alt="ajax-280.gif" width="150" height="120" border="0" /></a><br /><br />名前空間が使われた要素を取り出すには、getElementsByTagNameNS() というメソッドを使います。しかしこのメソッドは Internet Explorer では使えないため、Webブラウザによって処理を分ける必要があります。<br /><br />if文の条件になっている document.all は Internet Explorer 4.0 で実装された独自拡張です。これが使えるブラウザは Internet Explorer ということになるので、getElementsByTagName()メソッドを使います。<br /><br />逆にWebブラウザが Internet Explorer 以外の場合は getElementsByTagNameNS() メソッドを使う仕組みです。その時、引数になっている変数 rdf には接頭辞に対応したURIが入っています。<br /><br /><br />(5)変数 response から、さらに item という要素を取り出している部分です。<br /><br />var item = response[0].getElementsByTagName('item');<br /><br />response は配列なので、添え字を指定する必要があります。item も配列になります。<br /><br />item を取り出すイメージ<br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-281.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-281-thumbnail2.gif" alt="ajax-281.gif" width="150" height="120" border="0" /></a><br /><br /><br />(6)変数 item から title という要素を取り出している部分です。<br /><br />var title = item[i].getElementsByTagName('title');<br /><br />＊titleは配列になります。<br /><br />titleを取り出すイメージ<br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-282.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-282-thumbnail2.gif" alt="ajax-282.gif" width="150" height="120" border="0" /></a><br /><br /><br />(7)titleの値を取り出している部分です。<br /><br />var titleValue = title[0].firstChild.nodeValue;<br /><br />開始タグと終了タグではさまれた部分も要素になるので、その最初の子要素(firstChild)の値(nodeValue)で取得できます。<br /><br />値を取り出すイメージ<br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-283.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-283-thumbnail2.gif" alt="ajax-283.gif" width="150" height="120" border="0" /></a><br /><br /><br />＊＊＊ link、dc:date でも同じようにイメージしてください。 ＊＊＊<br /><br /><br />(8)変数 item から link という要素を取り出している部分です。<br /><br />var link = item[i].getElementsByTagName('link');<br /><br />＊linkは配列になります。<br /><br /><br />(9)linkの値を取り出している部分です。<br /><br />var linkValue = link[0].firstChild.nodeValue;<br /><br /><br />(10)変数 item から dc:date という要素を取り出している部分です。このタグは名前空間が使われていますので、ブラウザにより処理を分けています。<br /><br />var dc ="<a href="http://purl.org/dc/elements/1.1/" target="_blank">http://purl.org/dc/elements/1.1/</a>";<br />var dcDate;<br /><br />if(document.all){<br />&nbsp;&nbsp;dcDate = item[i].getElementsByTagName('dc:date');<br />}else{<br />&nbsp;&nbsp;dcDate = item[i].getElementsByTagNameNS(dc,'date');<br />}<br /><br />＊dcDateは配列になります。<br /><br /><br />(11)dc:dateの値を取り出している部分です。<br /><br />var dcDateValue = dcDate[0].firstChild.nodeValue;<br /><br /><br />(12)取得したデータを連結して組み立てている部分です。この部分を工夫することで、いろんな形で表示することができます。<br /><br />tmpHtml += dcDateValue + "　:"<br />tmpHtml += "&lt;a href='" + linkValue + "' target='_blank'&gt;" + titleValue + "&lt;/a&gt;";<br />tmpHtml += "&lt;br /&gt;\n";<br /><br />for文が1回繰り返される毎に、以下のようなHTMLが連結していきます。<br />2008-01-16T14:47:46+09:00　:&lt;a href='' target='_blank'&gt;テキスト&lt;/a&gt;&lt;br /&gt;<br /><br />プログラミングする時は、逆に組み立てたいHTMLを想像しながら書くことがコツです。<br /><br /><br />【解説】<br /><br />Web系のプログラミングで難しいのは、クロスブラウザ対応にすることです。今回は単純に Internet Explorer と それ以外という処理に分岐しました。<br /><br />しかし場合によっては、さらに Firefox、Safari、Opera、Netscape、Mozilla ごとに処理を分けなければならないこともあります。<br /><br />現状では Internet Explorer と Firefox でシェアの 93% を超えるようなので、学習レベルでしたら、とりあえずこの2つのWebブラウザに対応できれば大丈夫です。<br /><br /><br />(1)Webブラウザの判別方法について<br /><br />今回はWebブラウザによって処理を切り替えるため、document.all オブジェクトの有無を判定する「オブジェクト検出」という方法を使いました。all、getElementById、layers などがよく使われます。<br /><br />if(document.all){<br />&nbsp;&nbsp;処理<br />}else{<br />&nbsp;&nbsp;処理<br />}<br /><br />実際に使っている getElementsByTagNameNS で書くこともできます。使えない場合が Internet Explorer だということに注意してください。「!」で判定を逆にしています。「!」を使いたくない場合は、処理の内容を逆にしてください。<br /><br />if(!document.getElementsByTagNameNS){<br />&nbsp;&nbsp;処理<br />}else{<br />&nbsp;&nbsp;処理<br />}<br /><br /><br />(2)他にも appName というプロパティの値で、ブラウザ名から判断する方法もあります。<br /><br />if (navigator.appName == "Microsoft Internet Explorer") {<br />&nbsp;&nbsp;処理<br />}else{<br />&nbsp;&nbsp;処理<br />}<br /><br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
</item>
<item rdf:about="http://ajax.pgtop.net/article/78856579.html">
<link>http://ajax.pgtop.net/article/78856579.html</link>
<title>Ajax XML名前空間について。</title>
<description>前回、簡易RSSリーダーを作成しましたが、読み込んだRSSフィードのタグには「名前空間」が使われています。 Ajax のプログラミングとも関連が深いので、先に名前空間について説明します。名前空間とは、XMLドキュメントの中で、要素名や属性名が衝突することを避けるために用いる修飾子のことです。XML名前空間(Namespaces in XML) または XMLネームスペース以下のようなタグ名になっているものが、名前空間を使っています。rdfやdcを接頭辞といい、接頭辞とタグ名は...</description>
<dc:subject>Step7・XML名前空間について</dc:subject>
<dc:creator>Ajax入門</dc:creator>
<dc:date>2008-01-16T14:17:12+09:00</dc:date>
<content:encoded><![CDATA[
前回、簡易RSSリーダーを作成しましたが、読み込んだRSSフィードのタグには「名前空間」が使われています。 <strong>Ajax</strong> のプログラミングとも関連が深いので、先に名前空間について説明します。<br /><br />名前空間とは、XMLドキュメントの中で、要素名や属性名が衝突することを避けるために用いる修飾子のことです。<br /><br />XML名前空間(Namespaces in XML)　または XMLネームスペース<br /><br />以下のようなタグ名になっているものが、名前空間を使っています。rdfやdcを接頭辞といい、接頭辞とタグ名は「:」コロンで区切って書きます。<br /><br />&lt;rdf:RDF&gt;&lt;/rdf:RDF&gt;<br />&lt;dc:date&gt;&lt;/dc:date&gt;<br /><br />タグ名は普通でも属性名に名前空間を使っている場合もあります。<br />&lt;item rdf:about=""&gt;&lt;/item&gt;<br /><br />名前空間を使うと、あらかじめ定義されたHTMLタグや各分野で定義されたXMLタグと、あなたが独自に定義したXMLタグを区別することができます。<br /><br />名前空間を使うには、XMLドキュメントの最初の部分で、接頭辞と対応するURIを定義します。<br />URI(ユーアールアイ：Uniform Resource Identifier)<br /><br /><a href="http://ajaxhp.up.seesaa.net/image/ajax-284.gif" target="_blank"><img src="http://ajaxhp.up.seesaa.net/image/ajax-284-thumbnail2.gif" alt="ajax-284.gif" width="150" height="91" border="0" /></a><br /><br />あとはタグ名の前に接頭辞を加えることで、同じタグ名を使っていても区別できるようになります。<br /><br />名前空間を使った要素をプログラムの中で取り出すには、接頭辞に対応したURIを使いますので、あらかじめ変数に代入しておくと便利です。<br /><br />var rdf ="<a href="http://www.w3.org/1999/02/22-rdf-syntax-ns#" target="_blank">http://www.w3.org/1999/02/22-rdf-syntax-ns#</a>";<br /><br />var dc ="<a href="http://purl.org/dc/elements/1.1/" target="_blank">http://purl.org/dc/elements/1.1/</a>";<br /><br />以上の点を踏まえて、sample006の解説を読んでください。<br /><br /><br />【ワンポイント】<br /><br />XMLドキュメントには複数の形式のタグを一緒に書くことができます。例えばHTMLとXMLを同時に書いたりする場合です。そのような時はタグ名が重複する可能性があります。しかし名前空間を使うことで、同じタグ名でも区別できるのです。<br /><br />また同じタグ名で違う意味を持たせたい場合にも便利です。<br />&lt;a:address&gt;&lt;/a:address&gt;<br />&lt;b:address&gt;&lt;/b:address&gt;<br /><br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
</item>
</rdf:RDF>
