<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>PAOLOG &#187; Ajax</title>
	<atom:link href="http://scianto.net/archives/tag/ajax/feed" rel="self" type="application/rss+xml" />
	<link>http://scianto.net</link>
	<description>趣味のウェブデザインと管理人PAONの日記</description>
	<lastBuildDate>Thu, 29 Jul 2010 03:47:50 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://scianto.net/archives/tag/ajax/feed" />
		<item>
		<title>jQuery+JSONPで商品検索[jQuery+楽天API#1]</title>
		<link>http://scianto.net/archives/2009/03/11211024.php</link>
		<comments>http://scianto.net/archives/2009/03/11211024.php#comments</comments>
		<pubDate>Wed, 11 Mar 2009 12:10:24 +0000</pubDate>
		<dc:creator>paon</dc:creator>
				<category><![CDATA[web design]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Webサービス]]></category>

		<guid isPermaLink="false">http://scianto.net/archives/2009/03/11211024.php</guid>
		<description><![CDATA[     
これからはjQueryだろーって雰囲気なのでjQuery+楽天ウェブサービスを練習してみます。
     
     これまでjQueryのライブラリは使ったことはあっても自分でスクリプトを組んだことが [...]]]></description>
			<content:encoded><![CDATA[     <p><img src="http://scianto.net/paolog-wp/wp-content/uploads/2009/03/20090311_01.png" alt="20090311_01" title="20090311_01" width="500" height="310" class="alignnone size-full wp-image-536" /></p>
<p>これからはjQueryだろーって雰囲気なのでjQuery+楽天ウェブサービスを練習してみます。</p>
     <p><span id="more-537"></span></p>
     <p>これまでjQueryのライブラリは使ったことはあっても自分でスクリプトを組んだことがないのでここらで練習しておきます。今回の目標&amp;やりたいことはこれ！</p>
     <ul>
       <li><a href="http://webservice.rakuten.co.jp/api/itemsearch/">楽天商品検索API</a>を使用（version:2009-02-03）</li>
       <li>jQueryでAjax</li>
       <li>JSONP</li>
       <li>検索機能はなし</li>
       <li>用意するファイル・・・index.htmlとjQuery.js</li>
     </ul>
     <p>最初なのでシンプルなサンプルからいきます！。これをベースに機能を追加していく感じで・・・。まずはjQueryの本体をダウンロードしてindex.htmlに読み込みます。</p>
     <p>公式サイトからダウンロード：<a href="http://jquery.com/">jQuery</a></p>
     <pre>&lt;script type=&quot;text/javascript&quot; src=&quot;jquery.js&quot;&gt;&lt;/script&gt;</pre>
     <p>ページの読込み時に実行するjQueryお決まりの書式。<br />
     </p>
     <pre>$(document).ready( function () {～処理はここ～});</pre>
     <p>$(function) {}でもいけるみたい。ajax通信をするので「.ajax()」を使います。<br />
       ajax()関数のマニュアル：  <a href="http://docs.jquery.com/Ajax/jQuery.ajax#options">Ajax/jQuery.ajax &#8211; jQuery JavaScript Library</a></p>
     <pre>$.ajax({
～ここにオプション～
});</pre>
     <p>定義したオプションパラメータは次の通り。</p>
     <ul>
       <li>type<br />
       GETかPOSTかを指定。今回はGETです。デフォルトがGETなので書かなくてもOK。</li>
       <li>url<br />
       リクエスト先のベースとなるURL。</li>
       <li>data<br />
       上のurlで指定したURLの後ろにつけるクエリ。オブジェクト形式で指定します。キーワードに日本語を指定しても内部で変換してくれるのでそのまま日本語OKです。</li>
       <li>dataType<br />
       &quot;xml&quot;とか&quot;json&quot;とか、送信するデータの形式。今回は&quot;jsonp&quot;。</li>
       <li>jsonp<br />
       コールバック関数のためのパラメータが「callback」以外のときにここで名前を指定できます。</li>
       <li>success<br />
       通信が成功したときに実行される関数を指定します。</li>
     </ul>
     <p>これ以外にもたくさんのパラメータがあるので詳しくはドキュメントを見てください。</p>
     <h2>パラメータ詳細</h2>
     <pre>type: &quot;GET&quot;,</pre>
     <p>通信タイプは&quot;GET&quot;でいきます。なくてもOKですが、練習なので書きます。</p>
     <pre>url: &quot;http://api.rakuten.co.jp/rws/1.13/json?&quot;,</pre>
     <p>APIバージョンによって変わってくる値です。これは2009-02-03の場合です。</p>
     <pre>data: {
        &quot;developerId&quot;: &quot;ここにデベロッパーID&quot;,
        &quot;affiliateId&quot;: &quot;ここにアフィリエイトID&quot;,
        &quot;operation&quot;: &quot;ItemSearch&quot;,
        &quot;keyword&quot;: &quot;電卓&quot;,
        &quot;hits&quot;: &quot;5&quot;,
        &quot;version&quot; : &quot;2009-02-03&quot;,
         },</pre>
     <p>送信するクエリです。&quot;keyword&quot;は最近欲しい「電卓」で。ここは「&quot;（ダブルクウォート）」や「,（コンマ）」を忘れがちなので注意ですね。</p>
     <pre>dataType: &quot;jsonp&quot;,</pre>
     <p>送信するデータ形式はjsonp。</p>
       <pre>jsonp: &quot;callBack&quot;,</pre>
     <p>楽天APIではコールバック関数を指定するパラメータが「callBack」（Bが大文字）となっているのでここで指定しておきます。実際のクエリは「&amp;callBack=（jQueryによって勝手につけられる名前）」になります。</p>
     <pre>success: function(data) {
        $(&quot;&lt;ul/&gt;&quot;).appendTo(&quot;div#result&quot;);
        $.each(data.Body.ItemSearch.Items.Item, function(i, item) {
            var content = item.itemName;
            $(&quot;&lt;li/&gt;&quot;).append(content).appendTo(&quot;#result &gt; ul&quot;);
        });
 }</pre>
     <p>はじめの関数の引数にはJSONデータがはいっています。取得したデータにアクセスするには<code>$.each()</code>関数を使います。「<a href="http://gihyo.jp/dev/feature/01/jquery-ajax/0002?page=5">jQueryではじめるAjax：第2回　jQueryによるAjax実装｜gihyo.jp … 技術評論社</a>」によると第1引数には繰り返す対象のオブジェクト、第2引数には繰り返す処理を定義した関数を指定します。</p>
     <p>この関数にも2つの引数があって、1番目は何番目の要素かを示すインデックス、2番目は要素の値が入るということですが、ふたつめはちょっとわかりません。ただ、each()の第1引数に指定したものと同じオブジェクトが入るようです。なのでここのように「item」とすると商品名の「itemName」にアクセスするときは「item.itemName」となります。これでできたのでとりあえずこのままいきます。</p>
     <p>説明しなかったそのほかのコードはjQueryの関数をつかって商品名をリスト形式に整形するためのものです。結果はdiv#result内にulリストをつくって出力します。</p>
     <p>出来上がったサンプルコードを置いておきます。</p>
     <p class="view-sample"><a href="http://scianto.net/sample/rws/jsonp-1.txt">コードを見る</a></p>
]]></content:encoded>
			<wfw:commentRss>http://scianto.net/archives/2009/03/11211024.php/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://scianto.net/archives/2009/03/11211024.php" />
	</item>
		<item>
		<title>超～高機能なFlashギャラリーdfGallery 2.0</title>
		<link>http://scianto.net/archives/2009/01/27150752.php</link>
		<comments>http://scianto.net/archives/2009/01/27150752.php#comments</comments>
		<pubDate>Tue, 27 Jan 2009 06:07:52 +0000</pubDate>
		<dc:creator>paon</dc:creator>
				<category><![CDATA[web design]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Gallery]]></category>

		<guid isPermaLink="false">http://scianto.net/?p=483</guid>
		<description><![CDATA[

Flashで作られたギャラリースクリプトがこのdfGallery 2.0。

パッと見ただけでデザインが秀逸な感じですね。もちろんサンプルの写真は関係なしで。

これまでもたくさんのFlashギャラリーの [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-482" title="dfGallery 2.0 - Free Flash Gallery" src="http://scianto.net/paolog-wp/wp-content/uploads/2009/01/20090127_01.png" alt="dfGallery 2.0 - Free Flash Gallery" width="500" height="371" /></p>

<p>Flashで作られたギャラリースクリプトがこのdfGallery 2.0。</p>

<p>パッと見ただけでデザインが秀逸な感じですね。もちろんサンプルの写真は関係なしで。</p>

<p>これまでもたくさんのFlashギャラリーのスクリプトがありましたが、単独のページで表示するものが多かった気がします。その点これは「anywhere」って書いてあるようにどこにでも組み込むことができそうなので、たとえば記事の中で使うなんてことも簡単にできそうです。個人的にはこれだけでも使いたいですね。</p>

<p>あとは、テーマやスキンが変えられるところもいいかも。自サイトのデザインに合わせることができるので。</p>

<p>以下、公式サイトから抜粋。</p>


<ul>
		<li><strong>Embed</strong> the Gallery anywhere [Blog, Facebook, Myspace...]</li>
		<li><strong>Themes</strong> &#8211; Change the layout and the presentation of the gallery [advanced]</li>
		<li><strong>Skins</strong> &#8211; Simply edit a PNG file to change the whole look if your gallery [Skin guide in the package]</li>
		<li><strong>Flickr</strong> &#8211; Gets every Flickr album of any user [api key customizable]</li>
		<li><strong>Picasa</strong> &#8211; Load any picasa album by just configuring the URL</li>
		<li><strong>Custom</strong> Albums</li>
		<li>Full control over the system from the <strong>Administration Console</strong>.</li>
		<li><strong>AJAX</strong> &amp; <strong>Multiple</strong> Image Uploads</li>
		<li>Customize the <strong>background music </strong>of the gallery</li>
		<li><strong>Fullscreen</strong> feature lets you view images with the highest resolution.</li>
		<li>Built on Flex 3 SDK</li>
		<li>More coming in the <strong>upcoming builds</strong>&#8230;</li>
</ul>


<p>最近ようやくFlickerを使おうかなという気になってきたので、Flickerにアップロードした画像と連携させたりしてみたいですね。</p>


<h2>公式サイト&amp;ダウンロード<br />
</h2>


<p><a title="dfGallery 2.0 - Free Flash Gallery | Dezinerfolio" href="http://dezinerfolio.com/dfgallery-2/free-flash-gallery">dfGallery 2.0 &#8211; Free Flash Gallery | Dezinerfolio</a></p>]]></content:encoded>
			<wfw:commentRss>http://scianto.net/archives/2009/01/27150752.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://scianto.net/archives/2009/01/27150752.php" />
	</item>
		<item>
		<title>マルチドメインでもコメントをAjaxで投稿する</title>
		<link>http://scianto.net/archives/2008/06/01105815.php</link>
		<comments>http://scianto.net/archives/2008/06/01105815.php#comments</comments>
		<pubDate>Sun, 01 Jun 2008 01:58:15 +0000</pubDate>
		<dc:creator>paon</dc:creator>
				<category><![CDATA[web design]]></category>
		<category><![CDATA[Ajax]]></category>

		<guid isPermaLink="false">http://scianto.net/wpmemo/?p=244</guid>
		<description><![CDATA[
おはようございます。
今週は連日招待状の宛名書きをしてます。書く前に一度練習してから清書しているので一通書くのに約１０分くらいかかってしまいます。けっこう疲れます。
それが効いているのか、はじめはかなりヤバイ感じのへた [...]]]></description>
			<content:encoded><![CDATA[<p class="photo"><img width="500" height="277" alt="20080527_01.png" src="http://scianto.net/photo/20080527_01.png" class="mt-image-none" style="" /></p>
<p>おはようございます。</p>
<p>今週は連日招待状の宛名書きをしてます。書く前に一度練習してから清書しているので一通書くのに約１０分くらいかかってしまいます。けっこう疲れます。<br />
それが効いているのか、はじめはかなりヤバイ感じのへた字でしたが少しづつ人に見せてもまぁオッケーなくらいになってきました。こういうのって最後になって納得いく字になっていくんでしょうねー。</p>
<p>ここから本題。<br />
先日から挑戦しているコメント投稿のAjax化ですがうまくいきません。投稿できたり、できなかったりとかなり不安定な状況で困っています。</p>

<span id="more-244"></span>
<p>前記事でも書いたようにこのブログはマルチドメインでMTを利用しているのでJavascriptのクロスドメイン制限に引っかかってしまいます。それで違うドメインにあるmt-comments.cgiにPOSTすることができません。そこでPHPで書いた中継プログラム（プロキシサーバー?）を中継してmt-comments.cgiにPOSTするようにしました。</p>
<p>これでうまくいくかな？と思っていたのですが、サインインして投稿すると匿名投稿になってしまったり、投稿自体ができなかったりとおもったように動いてくれませんでした。</p>
<p>コメントのAjax化の方法は基本的に<br />
<a href="http://bizcaz.com/archives/2008/04/26-004152.php">Movable Type のコメントを Ajax で投稿する２ &#8211; Movable Type 備忘録 </a><br />
の内容を参考にしています。変更した点はJavascriptの冒頭の一部を</p>
<pre>var&nbsp;proxy&nbsp;=&nbsp;'&lt;$mt:BlogURL$&gt;proxy.php';
var&nbsp;mt_url&nbsp;=&nbsp;&quot;&lt;$MTCGIPath$&gt;&lt;$MTCommentScript$&gt;&quot;;</pre>
<p>のように変更&amp;追記し、関数ajaxcomment_postとajaxcomment_previewのなかの変数parsを</p>
<pre>/*ajaxcomment_post*/
pars = "url="+ encodeURIComponent(mt_url + "?" + pars + "&#038;post=post");
/*ajaxcomment_preview*/
pars = &quot;url=&quot;+ encodeURIComponent(mt_url + &quot;?&quot; + pars + &quot;&amp;prevoew=preview&quot;);</pre>
<p>と変更しているところです。</p>
<p>そのほかは配布されているテンプレートをダウンロードさせてもらってそれを参考に必要箇所をオリジナルテンプレートに追記した感じです。これでいけるはずだったんですが・・・。</p>
<p>サインインしなければいまのとことプレビューと投稿ができるのでコメントはサインインしないでお願いします。</p>
<p>ちなみに今回作成したプロキシはこんなコードです。</p>
<pre name="code" class="php">&lt;?php
/*
prototype.comment.jsからPOSTされたデータを中継してmt-comments.cgiに再びPOSTする
*/

//URLデコード
$dURL&nbsp;=&nbsp;urldecode($_POST['url']);

//URLを分解
$url&nbsp;=&nbsp;parse_url($dURL);

//クエリ
$query&nbsp;=&nbsp;(isset($url['query']))&nbsp;?&nbsp;('?'&nbsp;.&nbsp;$url['query'])&nbsp;:&nbsp;&quot;&quot;;

//リクエストライン
$request&nbsp;=&nbsp;POST&nbsp;.&nbsp;&quot;&nbsp;&quot;&nbsp;.&nbsp;$url['path']&nbsp;.&nbsp;$query&nbsp;.&nbsp;&quot;&nbsp;HTTP/1.0\r\n&quot;;

//リクエストヘッダ
$request&nbsp;.=&nbsp;&quot;HOST:&nbsp;&quot;&nbsp;.&nbsp;$url['host']&nbsp;.&nbsp;&quot;\r\n&quot;;
$request&nbsp;.=&nbsp;&quot;User-Agent:&nbsp;PHP/&quot;&nbsp;.&nbsp;phpversion()&nbsp;.&nbsp;&quot;\r\n&quot;;

//POSTデータをヘッダの末尾に追加
parse_otr($url['query'],&nbsp;$post);
while&nbsp;(list($key,&nbsp;$value)&nbsp;=&nbsp;each($post))&nbsp;{
&nbsp;&nbsp;$POST[]&nbsp;=&nbsp;$key&nbsp;.&nbsp;&quot;=&quot;&nbsp;.&nbsp;$value;
}
$postdata&nbsp;.=&nbsp;implode(&quot;&amp;&quot;,&nbsp;$POST);
$request&nbsp;.=&nbsp;&quot;Content-Type:&nbsp;application/x-www-form-urlencoded\r\n&quot;;
$request&nbsp;.=&nbsp;&quot;Content=Length:&nbsp;&quot;&nbsp;.&nbsp;strlen($postdata)&nbsp;.&nbsp;&quot;\r\n&quot;;
$request&nbsp;.=&nbsp;&quot;\r\n&quot;;
$request&nbsp;.=&nbsp;$postdata;

//Webサーバーに接続
$fp&nbsp;=&nbsp;fsockopen($url['host'],&nbsp;80);

//接続に失敗したときの処理
if&nbsp;(!$fp)&nbsp;{
&nbsp;&nbsp;die(&quot;MovabelTypeへの接続に失敗しました\r\n&quot;);
}

//リクエストデータ送信
fputs($fp,&nbsp;$request);

//レスポンスデータ受信
$response&nbsp;=&nbsp;&quot;&quot;;
while&nbsp;(!feof($fp))&nbsp;{
&nbsp;&nbsp;$response&nbsp;.=&nbsp;fgets($fp,&nbsp;1024);
}

//接続終了
fclose($fp);

//ヘッダ部分とボディ部分を分離
$out&nbsp;=&nbsp;split(&quot;\r\n\r\n&quot;,&nbsp;$response,&nbsp;2);
header(&quot;Content-Type:&nbsp;text/html;&nbsp;charset=UTF-8&quot;);
header(&quot;Pragma:&nbsp;no-cache&quot;);
echo&nbsp;$out[1];

?&gt;&nbsp;
</pre>
<p>Perlの知識がないのが痛いですが、サインしたときのMTの動作をもっと調べないといけないみたいですね。</p>
<p class="edit">2008. 6. 1追記<br />
ちょうど<a href="http://bizcaz.com/archives/2008/06/01-030409.php#more">サブドメイン環境で Ajax やってみる &#8211; Movable Type 備忘録</a>をいう記事がアップされてました。</p>]]></content:encoded>
			<wfw:commentRss>http://scianto.net/archives/2008/06/01105815.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://scianto.net/archives/2008/06/01105815.php" />
	</item>
	</channel>
</rss>
