比較的多くのデータ数を非同期通信でやりとりするときに、よく使っているスタイルを紹介します。
まずJavaScriptで
function toPHP(){
var options = {
//<form のidはxyzだったとします。
method:'post',
onSuccess:getResult,
parameters:$("xyz").serialize()
//これで、form内の全項目を一括で渡すことができます
};
new Ajax.Request('../lib/ajax/sample.php', options);
}
sample.phpでは
//結果はjson形式で返します
header('Content-Type: application/json; charset=UTF-8');
//jsでserialize時に自動的にurlencodeされているため
foreach($_POST as $key => $val){
$_POST[urldecode($key)] = urldecode($val);
}
[ここでサーバ側の処理をします]
$res['abc'] = '123';
$res['def'] = '456';
・
・
//Js側に返したいデータを連想配列に登録していきます
echo Zend_Json::encode($res);
//連想配列をJson形式に変換して返します
返された値をJs側で処理するには
function getResult(httpObj){
var Itm = httpObj.responseJSON;
$("abc").value = Itm.abc;
//というアクセスもできますし配列に変換した後に処理することもできる
以上 簡単・安全にAjax通信する方法の紹介でした。
一般アプリではC++、WebアプリではPHPとJavaScriptを主に使用してプログラムを構築しています。このブログではシステム構築時に困ったこと、そしてその解決方法などを中心に投稿していこうと考えています。 ちなみに、PHPでよく利用しているライブラリーは、Zend FrameWork(MVCモデルとしては利用していません)、JavaScriptはprototype.jsを使ってプログラミングしています。
2009年8月23日日曜日
allow_url_fopenがoffのサーバで imagecreatefromstring
google Chart からレスポンスされる画像をサーバに保存し、結果をPDF出力ページ内に挿入しようとしました。
で、このアプリを利用していただくユーザ様のレンタルサーバの設定状況を確認してみると、allow_url_fopenがoffとなっていて、レスポンスをそのままimageCreateFromPngで画像リソース化することができないことがわかりました。
そこで、Zend Framework の HttpClientクラスを使用することにより、この問題を簡単にクリアすることができましたので、ここに「おぼえがき」を書きました。
インクルードは
require_once 'Zend/Uri.php';
require_once 'Zend/Http/Client.php';
の2つ
まず、
Zend_Uri::setConfig(array('allow_unwise' => true));
として、googleChartに渡すパラメータに含まれる | なども指定可と変更
つづいて
$client = new Zend_Http_Client("http://chart.apis.google.com/chart?.........");
$respose = @$client->request();
if($this->respose->isError()){
return false;
}
$img = @imagecreatefromstring($this->respose->getRawBody());
とすることで、allow_url_fopen offの環境でも無事に画像リソースを外部サーバから受け取ることができます。
で、このアプリを利用していただくユーザ様のレンタルサーバの設定状況を確認してみると、allow_url_fopenがoffとなっていて、レスポンスをそのままimageCreateFromPngで画像リソース化することができないことがわかりました。
そこで、Zend Framework の HttpClientクラスを使用することにより、この問題を簡単にクリアすることができましたので、ここに「おぼえがき」を書きました。
インクルードは
require_once 'Zend/Uri.php';
require_once 'Zend/Http/Client.php';
の2つ
まず、
Zend_Uri::setConfig(array('allow_unwise' => true));
として、googleChartに渡すパラメータに含まれる | なども指定可と変更
つづいて
$client = new Zend_Http_Client("http://chart.apis.google.com/chart?.........");
$respose = @$client->request();
if($this->respose->isError()){
return false;
}
$img = @imagecreatefromstring($this->respose->getRawBody());
とすることで、allow_url_fopen offの環境でも無事に画像リソースを外部サーバから受け取ることができます。
登録:
投稿 (Atom)