<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6776948849819784268</id><updated>2012-01-19T17:46:50.868+09:00</updated><category term='つぶやき'/><category term='PHP'/><category term='android'/><category term='javascript'/><category term='Ajax'/><title type='text'>プログラミングおぼえがき</title><subtitle type='html'>一般アプリではC++、WebアプリではPHPとJavaScriptを主に使用してプログラムを構築しています。このブログではシステム構築時に困ったこと、そしてその解決方法などを中心に投稿していこうと考えています。
ちなみに、PHPでよく利用しているライブラリーは、Zend FrameWork(MVCモデルとしては利用していません）、JavaScriptはprototype.jsを使ってプログラミングしています。</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://cybercivil.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6776948849819784268/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://cybercivil.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>cybercivil</name><uri>http://www.blogger.com/profile/05276011209599690784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-dukQqjhyEdM/Tsnpjh4hqUI/AAAAAAAAAPg/tTfJZQYZArQ/s220/sp220.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6776948849819784268.post-4174077125364533023</id><published>2011-11-22T05:34:00.002+09:00</published><updated>2011-11-22T06:03:10.761+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Android HTMLのページ内リンク</title><content type='html'>ご存知の通り、AndroidのインターネットブラウザはHTML5対応です。&lt;br /&gt;これでスッキリした、HTML5さえ習得すればIETesterのお世話になることもない。&lt;br /&gt;&lt;br /&gt;で、「工事メイト for Smart」のヘルプはインターネットを介してブラウザで表示することにした。&lt;br /&gt;現場では、インターネット回線が拾えない状況もありえることも懸念されたが、現場でヘルプを読む機会は少ないと判断した。&lt;br /&gt;ホームページ上にヘルプを置いておくと、アプリの機能改善などを行っても即座にそれをヘルプに反映でき、使い方によっては利用者に対しメッセージ伝達の手段としても活用できるメリットがあると考えました。&lt;br /&gt;&lt;br /&gt;Android のHTMLページはどうしても細長くなる。どんどんスクロールして読み続けるパターンを採らざるを得ない。&lt;br /&gt;で、使いたくなる機能がページ内リンク(&lt;span class="st"&gt;href="#アンカー名"&lt;/span&gt;)です。&lt;br /&gt;ところが、Androidのブラウザはページ内リンクを無視する、まるで「前そこは見たでしょう、見たところに又戻ってもしょうがないですよ」といっているみたいです。&lt;br /&gt;&lt;br /&gt;で、解決策はJavaScriptです。&lt;br /&gt;世の中はjQuery一色ですが、prototype.jsも捨てたものじゃない。&lt;br /&gt;ジャンプ表示したいエレメントにidを設定し、マウスのクリックイベントに&lt;br /&gt;&lt;br /&gt;Elemen.scrollTo(ele)&lt;br /&gt;と設定するだけ、エフェクトなしですとこれだけでページ内リンク機能の問題は解決します。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6776948849819784268-4174077125364533023?l=cybercivil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cybercivil.blogspot.com/feeds/4174077125364533023/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://cybercivil.blogspot.com/2011/11/android-html.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6776948849819784268/posts/default/4174077125364533023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6776948849819784268/posts/default/4174077125364533023'/><link rel='alternate' type='text/html' href='http://cybercivil.blogspot.com/2011/11/android-html.html' title='Android HTMLのページ内リンク'/><author><name>cybercivil</name><uri>http://www.blogger.com/profile/05276011209599690784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-dukQqjhyEdM/Tsnpjh4hqUI/AAAAAAAAAPg/tTfJZQYZArQ/s220/sp220.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6776948849819784268.post-3557437817772451443</id><published>2011-11-20T06:33:00.000+09:00</published><updated>2011-11-20T06:33:52.123+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='つぶやき'/><title type='text'>Androidアプリ「工事メイト for Smart」をリリース</title><content type='html'>2011.11.14 アンドロイドマーケットに「工事メイト Ｐｒｏ」と「工事メイト Light」を登録しました。&lt;br /&gt;&lt;br /&gt;思えば最初に私が測量ソフトを市場に最初に出したのは、今から２２年前　やはり携帯端末ソフト「ザ・現場Ex」というシャープ電子手帳ＰＡシリーズで動作するアプリでした。&lt;br /&gt;続けて「ザ・現場DT」というトータルステーションと接続して利用するデータコレクタタイプをリリースもしたのですが、それ以降の携帯端末用アプリの作成はひかえてきました。&lt;br /&gt;&lt;br /&gt;ザウルス・Parm・WindowsMobile　etc... 短期間に生まれては消えていくＡＰ環境やハードウエアに少し違和感を感じていたのがその主な理由でした。&lt;br /&gt;&lt;br /&gt;昨年末、すこし気付くのが遅かったかも知れませんが、この違和感を解消する存在スマートフォンアプリに気付きました。&lt;br /&gt;&lt;br /&gt;まず選択肢としてAppleとAndroidの２つがありましたが、工事現場で利用される端末としてタフさを要求されると考え、複数のハードメーカーから多様なニーズに対応するハードが供給される可能性のあるAndroid環境での開発としました。&lt;br /&gt;&lt;br /&gt;開発自体は、計算モジュール自体はＷｉｄｎｏｗｓで動作する「工事メイト」のC++ソースをJAVAにインプリしながらチューニングを施し、ユーザインタフェイスをAndroid用に新規構築するといった手法をとりました。&lt;br /&gt;&lt;br /&gt;フリックやピンチイン・アウトなどのインタフェイスは、まさに憔悴の機能であったため非常に楽しく開発を進めることができました。&lt;br /&gt;&lt;br /&gt;つづきは後日&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6776948849819784268-3557437817772451443?l=cybercivil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cybercivil.blogspot.com/feeds/3557437817772451443/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://cybercivil.blogspot.com/2011/11/android-for-smart.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6776948849819784268/posts/default/3557437817772451443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6776948849819784268/posts/default/3557437817772451443'/><link rel='alternate' type='text/html' href='http://cybercivil.blogspot.com/2011/11/android-for-smart.html' title='Androidアプリ「工事メイト for Smart」をリリース'/><author><name>cybercivil</name><uri>http://www.blogger.com/profile/05276011209599690784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-dukQqjhyEdM/Tsnpjh4hqUI/AAAAAAAAAPg/tTfJZQYZArQ/s220/sp220.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6776948849819784268.post-4259003180253343521</id><published>2011-11-17T05:26:00.000+09:00</published><updated>2011-11-17T05:26:38.818+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Conversion to Dalvik format failed with error 1</title><content type='html'>昨日まで問題なく apk を出力していたandroidプロジェクトが突如 「Conversion to Dalvik format failed with error 1」のエラーを吐いてストップ。&lt;br /&gt;SDK のアップデイトも怠ってないはず。&lt;br /&gt;原因は、なぜか proguard が古いバージョンに戻っていたためでした。&lt;br /&gt;で、Android SDK Tools の proguardフォルダの binフォルダと libフォルダを、&lt;a href="http://sourceforge.net/projects/proguard/files/proguard/"&gt;本家&lt;/a&gt;からダウンロードした最新版と差し替えて、解決。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6776948849819784268-4259003180253343521?l=cybercivil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cybercivil.blogspot.com/feeds/4259003180253343521/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://cybercivil.blogspot.com/2011/11/conversion-to-dalvik-format-failed-with.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6776948849819784268/posts/default/4259003180253343521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6776948849819784268/posts/default/4259003180253343521'/><link rel='alternate' type='text/html' href='http://cybercivil.blogspot.com/2011/11/conversion-to-dalvik-format-failed-with.html' title='Conversion to Dalvik format failed with error 1'/><author><name>cybercivil</name><uri>http://www.blogger.com/profile/05276011209599690784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-dukQqjhyEdM/Tsnpjh4hqUI/AAAAAAAAAPg/tTfJZQYZArQ/s220/sp220.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6776948849819784268.post-8297427653517441588</id><published>2010-03-15T15:02:00.000+09:00</published><updated>2010-03-15T15:02:56.451+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>続 Zend_Mailの文字化け対策</title><content type='html'>Zend_Mailの文字化け対策の続きです。&lt;br /&gt;漢字で登録した送信者名の文字化けを防止するには、&lt;br /&gt;Mail.phpの protected function _formatAddress($email, $name)関数内の&lt;br /&gt;$encodedName = $this-&gt;_encodeHeader($name);　を&lt;br /&gt;$encodedName = mb_encode_mimeheader($name, 'ISO-2022-JP');　へと&lt;br /&gt;変更することで対応できます。&lt;br /&gt;また、長いサブジェクトの後ろ文字化けを防止するには&lt;br /&gt;protected function _encodeHeader($value)関数内の&lt;br /&gt;Zend_Mime::LINEENDを、'' へとに変更することで対応できます。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6776948849819784268-8297427653517441588?l=cybercivil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cybercivil.blogspot.com/feeds/8297427653517441588/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://cybercivil.blogspot.com/2010/03/zendmail.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6776948849819784268/posts/default/8297427653517441588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6776948849819784268/posts/default/8297427653517441588'/><link rel='alternate' type='text/html' href='http://cybercivil.blogspot.com/2010/03/zendmail.html' title='続 Zend_Mailの文字化け対策'/><author><name>cybercivil</name><uri>http://www.blogger.com/profile/05276011209599690784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-dukQqjhyEdM/Tsnpjh4hqUI/AAAAAAAAAPg/tTfJZQYZArQ/s220/sp220.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6776948849819784268.post-5986851200532759660</id><published>2010-03-07T17:07:00.000+09:00</published><updated>2010-03-07T17:07:36.470+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><title type='text'>Prototypeベースのドラッグ移動・リサイズ可能ポップアップウィンドウ</title><content type='html'>やはり、自分で作成し細かな拡張や変更のできるポップアップウィンドウがほしくなり、ポップアップウィンドウクラスを作成いたしました。&lt;br /&gt;Mit-Styleライセンスとしていますので、&lt;a href="http://cybercivil.net/cycPopupWin.html"&gt;よろしければご利用ください&lt;/a&gt;。&lt;br /&gt;ほかにも、予約状況とリンクした、日時指定ができるカレンダークラスやポップアップ検索ウィンドウクラスなど色々作成しているのですが、Ajaxでバックグラウンドのサーバサイトスクリプトと絡み合っているため一般化しづらく、公開にはいたっていません。&lt;br /&gt;暇があれば、一般化したクラスとして公開したいと考えています。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6776948849819784268-5986851200532759660?l=cybercivil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cybercivil.blogspot.com/feeds/5986851200532759660/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://cybercivil.blogspot.com/2010/03/prototype.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6776948849819784268/posts/default/5986851200532759660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6776948849819784268/posts/default/5986851200532759660'/><link rel='alternate' type='text/html' href='http://cybercivil.blogspot.com/2010/03/prototype.html' title='Prototypeベースのドラッグ移動・リサイズ可能ポップアップウィンドウ'/><author><name>cybercivil</name><uri>http://www.blogger.com/profile/05276011209599690784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-dukQqjhyEdM/Tsnpjh4hqUI/AAAAAAAAAPg/tTfJZQYZArQ/s220/sp220.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6776948849819784268.post-1839866960322786794</id><published>2009-12-24T17:41:00.000+09:00</published><updated>2009-12-24T17:41:28.526+09:00</updated><title type='text'>ＩＥ６，７でwindows.jsのエラーを防止する</title><content type='html'>prototypeベースでサブウィンドウを表示するwindows.jsは高機能で実装も簡単ですが、prototypeのバージョンが1.6になったころから、IE6及びIE7でエラーを吐くようになりました。&lt;br /&gt;原因は、windows.jsの_checkIEOverlapping関数にありこの関数の&lt;br /&gt;     if(!this.iefix &amp;&amp; (navigator.appVersion.indexOf('MSIE')&gt;0)...){&lt;br /&gt;     }&lt;br /&gt;の部分をコメントアウトすることで、エラーを吐くことを防止することができます。&lt;br /&gt;もはや古典となったprototype.jsですが、使い慣れた環境はなかなか捨てきれないものです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6776948849819784268-1839866960322786794?l=cybercivil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cybercivil.blogspot.com/feeds/1839866960322786794/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://cybercivil.blogspot.com/2009/12/windowsjs.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6776948849819784268/posts/default/1839866960322786794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6776948849819784268/posts/default/1839866960322786794'/><link rel='alternate' type='text/html' href='http://cybercivil.blogspot.com/2009/12/windowsjs.html' title='ＩＥ６，７でwindows.jsのエラーを防止する'/><author><name>cybercivil</name><uri>http://www.blogger.com/profile/05276011209599690784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-dukQqjhyEdM/Tsnpjh4hqUI/AAAAAAAAAPg/tTfJZQYZArQ/s220/sp220.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6776948849819784268.post-2642804643273417525</id><published>2009-12-24T17:26:00.001+09:00</published><updated>2009-12-24T17:29:00.846+09:00</updated><title type='text'>Zend_Mailの文字化け対策</title><content type='html'>Zend_Mailは非常に便利ですが、全角の送信者名や受信者名が文字化けします。&lt;br /&gt;原因は、 送信者名や受信者名をUTF-8からISO-2002-JPに変換した後、それをsetFrom及びaddTo関数の引数として渡すことにより生じています。&lt;br /&gt;setFrom,addTo関数では、その内部で_filterName関数によりサニタイジングしていますが、その内容は&lt;br /&gt;protected function _filterName($name)&lt;br /&gt;{&lt;br /&gt;$rule = array("\r" =&amp;gt; '',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "\n" =&amp;gt; '',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "\t" =&amp;gt; '',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '"' &amp;nbsp;&amp;nbsp;  =&amp;gt; "'",&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '&amp;lt;' =&amp;gt; '[',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '&amp;gt;'  =&amp;gt; ']',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;        return trim(strtr($name, $rule));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;ですので、ISO-2002-JPでは、バケバケ文字の出来上がりとなります。&lt;br /&gt;とりあえず、送受信者名のサニタイジングは事前に自前で処理し、 _filterNameはコメントアウトして文字化け対策は完了です。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6776948849819784268-2642804643273417525?l=cybercivil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cybercivil.blogspot.com/feeds/2642804643273417525/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://cybercivil.blogspot.com/2009/12/zendmail.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6776948849819784268/posts/default/2642804643273417525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6776948849819784268/posts/default/2642804643273417525'/><link rel='alternate' type='text/html' href='http://cybercivil.blogspot.com/2009/12/zendmail.html' title='Zend_Mailの文字化け対策'/><author><name>cybercivil</name><uri>http://www.blogger.com/profile/05276011209599690784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-dukQqjhyEdM/Tsnpjh4hqUI/AAAAAAAAAPg/tTfJZQYZArQ/s220/sp220.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6776948849819784268.post-9139105543521499708</id><published>2009-08-23T09:01:00.004+09:00</published><updated>2009-08-23T09:41:37.328+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><title type='text'>Prototype.jsとZend_Jsonで簡単にＡｊａｘ</title><content type='html'>比較的多くのデータ数を非同期通信でやりとりするときに、よく使っているスタイルを紹介します。&lt;br /&gt;まずJavaScriptで&lt;br /&gt;function toPHP(){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var options = {&lt;br /&gt;//＜ｆｏｒｍ のidはxyzだったとします。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; method:'post',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; onSuccess:getResult,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; parameters:$("xyz").serialize()&lt;br /&gt;//これで、form内の全項目を一括で渡すことができます&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; new Ajax.Request('../lib/ajax/sample.php', options);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;sample.phpでは&lt;br /&gt;//結果はｊｓｏｎ形式で返します&lt;br /&gt;header('Content-Type: application/json; charset=UTF-8'); &lt;br /&gt;//ｊｓでserialize時に自動的にurlencodeされているため&lt;br /&gt;foreach($_POST as $key =&amp;gt; $val){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $_POST[urldecode($key)] = urldecode($val);&lt;br /&gt;} &lt;br /&gt;［ここでサーバ側の処理をします］&lt;br /&gt;$res['abc']&amp;nbsp; = '123';&lt;br /&gt;$res['def']&amp;nbsp; = '456';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ・&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ・&lt;br /&gt;//Js側に返したいデータを連想配列に登録していきます&lt;br /&gt;echo Zend_Json::encode($res);&lt;br /&gt;//連想配列をJson形式に変換して返します&lt;br /&gt;&lt;br /&gt;返された値をJs側で処理するには&lt;br /&gt;function getResult(httpObj){&lt;br /&gt;&amp;nbsp; &amp;nbsp; var Itm =&amp;nbsp; httpObj.responseJSON;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("abc").value = Itm.abc;　&lt;br /&gt;//というアクセスもできますし配列に変換した後に処理することもできる&lt;br /&gt;&lt;br /&gt;以上　簡単・安全にAjax通信する方法の紹介でした。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6776948849819784268-9139105543521499708?l=cybercivil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cybercivil.blogspot.com/feeds/9139105543521499708/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://cybercivil.blogspot.com/2009/08/prototypejszendjsonw.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6776948849819784268/posts/default/9139105543521499708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6776948849819784268/posts/default/9139105543521499708'/><link rel='alternate' type='text/html' href='http://cybercivil.blogspot.com/2009/08/prototypejszendjsonw.html' title='Prototype.jsとZend_Jsonで簡単にＡｊａｘ'/><author><name>cybercivil</name><uri>http://www.blogger.com/profile/05276011209599690784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-dukQqjhyEdM/Tsnpjh4hqUI/AAAAAAAAAPg/tTfJZQYZArQ/s220/sp220.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6776948849819784268.post-1691913932990733657</id><published>2009-08-23T06:55:00.005+09:00</published><updated>2009-08-23T07:55:29.488+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>allow_url_fopenがoffのサーバで imagecreatefromstring</title><content type='html'>google Chart  からレスポンスされる画像をサーバに保存し、結果をＰＤＦ出力ページ内に挿入しようとしました。&lt;br /&gt;で、このアプリを利用していただくユーザ様のレンタルサーバの設定状況を確認してみると、allow_url_fopenがoffとなっていて、レスポンスをそのままimageCreateFromPngで画像リソース化することができないことがわかりました。&lt;br /&gt;そこで、Zend Framework の　HttpClientクラスを使用することにより、この問題を簡単にクリアすることができましたので、ここに「おぼえがき」を書きました。&lt;br /&gt;&lt;br /&gt;インクルードは&lt;br /&gt;require_once 'Zend/Uri.php';&lt;br /&gt;require_once 'Zend/Http/Client.php';&lt;br /&gt;の2つ&lt;br /&gt;&lt;br /&gt;まず、&lt;br /&gt;Zend_Uri::setConfig(array('allow_unwise' =&amp;gt; true));&lt;br /&gt;として、googleChartに渡すパラメータに含まれる  | 　なども指定可と変更&lt;br /&gt;つづいて&lt;br /&gt;$client = new Zend_Http_Client("http://chart.apis.google.com/chart?.........");&lt;br /&gt;$respose = @$client-&amp;gt;request();&lt;br /&gt;if($this-&amp;gt;respose-&amp;gt;isError()){&lt;br /&gt;return false;&lt;br /&gt;}&lt;br /&gt;$img = @imagecreatefromstring($this-&amp;gt;respose-&amp;gt;getRawBody());&lt;br /&gt;&lt;br /&gt;とすることで、allow_url_fopen offの環境でも無事に画像リソースを外部サーバから受け取ることができます。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6776948849819784268-1691913932990733657?l=cybercivil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cybercivil.blogspot.com/feeds/1691913932990733657/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://cybercivil.blogspot.com/2009/08/allowurlfopenoff-imagecreatefromstring.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6776948849819784268/posts/default/1691913932990733657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6776948849819784268/posts/default/1691913932990733657'/><link rel='alternate' type='text/html' href='http://cybercivil.blogspot.com/2009/08/allowurlfopenoff-imagecreatefromstring.html' title='allow_url_fopenがoffのサーバで imagecreatefromstring'/><author><name>cybercivil</name><uri>http://www.blogger.com/profile/05276011209599690784</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-dukQqjhyEdM/Tsnpjh4hqUI/AAAAAAAAAPg/tTfJZQYZArQ/s220/sp220.jpg'/></author><thr:total>0</thr:total></entry></feed>
