h2ospace

Cake PHPã?§ã??JSONã??ç??æ??ã??ã??æ??æ??ï??PHP5.2æ?ªæº?ç?¨ï??

2009-12-19 14:58:13

æ??è¿?ã?®é?¢å¿?äº?ã?¨ã??ã??ã?°ã??mixiã?¢ã??ã?ªã?¨iGoogleã?¬ã?¸ã?§ã??ã??ã??ã??ã??ã??ã??å?¯è??æ?§ã??åº?ã??ã??ã??ã??ã?§ã??é??å??ã?£ã?¦ã??ã??ã??ã??ä??ã?£ã?¦ã??ã??ã??ã??

ã??ã??ã?§ã??ä??å?? JSONã??ä?¿ã?£ã?¦PHPã?¨ JavaScriptã?§ã??ã??ã?¿ã??ã??ã??å??ã??ã??ã??ã??ã?¨ã??ã??ã?®ã?§ã??ã??ã??ã??ã??ã??ã?ªã??ã?ªã??大å¤?ã??ã?¨ã??ã??ã??ã?¨ã?§ã??ã?¡ã?¢ã??å??ã??ã?¦ã?¨ã??ã??ã?ªã??ã??

å?°ã?£ã??ç??

ã??ã??ã??æ?®é??ã?? CakePHPã?§ã??{‘ret’: ‘value’}ã??ã?¨ã??ã??å?¤ã??å??ã??å?ºã??ã?°ã??ã??ã?®ã??ã??ã??ã?¨æ??ã??ã??ã?¤ã??ã?£ã?¦ã?¿ã??ã?®ã?§ã??ã??ã??ã??ã??ã??ä¸?æ??ã??ã??ã??ã?ªã??ã??ã??ä¸?ã?ªç??象ã?¯æ¬¡ã?®ã?¨ã??ã??ã?§ã??ã??

  • æ??æ?¬èª?ã??æ??å??å??ã??ã??ã??
  • æ??è¡?ã??å??ã??ã??ã??ã?¨å?¤ã??è¿?ã?£ã?¦ã??ã?ªã??

ã?§ã??ã??ã??ã??ã??調ã??ã??ã?¨ã?ªã??ã??ã?? JSONã??æ?±ã??ã??ã?¯é?¢å??ã?ªæ??ç¶?ã??ã??å¿?è¦?ã?ªã??ã??ã?§ã??ã??ã??ã??ä¸?ç?ºã?§è§£決ã?§ã??ã??ã??json_encodeã??ã??json_decodeã??ã?¨ã??ã??ã??ã?¡ã??ã?¯ã??ã?§ã??ã??PHPã??ã?¯å??ã??ã?£ã?¦ã??ã??ã??ã??ã?ªã??

ã??ã??ã??ã??ã??ã??ã??

  • json_encodeã?ªã?©ã?¯ PHP5.2ä??ä¸?ã?§ã?ªã??ã??ã?°ä?¿ã??ã?ªã??

é??ç?ºã??ã?¦ã??ã??ã??ã??ã??ã??ã?¯ã??ã??ã?? 5.1ã?§ã??ã??ã??ã??ã?¨ã??ã??ã??ã?¨ã?§ä?¿ã??ã??ï??ã??ã?§ã??ã??ã??ã?? Zend Frameworkã??ã?¯ã??Zend_Jsonã?¨ã??ã??ã?¢ã?¸ã??ã??ã??ã??ã??ã??ã?¨ã??ã??ã??ã?¨ã?§ã??ã??ã??ã??ä?¿ã??ã??ã?¨ã??ã??ã?®ã?§ã??ã??ã??ã??ã??ã??ã??ã??ã??Zend_Jsonã?¨ã??ã??ã?¯ã?©ã??ã?¯è¦?ã?¤ã??ã??ã?ªã??ã??ç??ã?¨ã??ã??ã??ã?¦å??è?¦å??è?¦ã??

ã??ã??ã??ã??解決å?ºæ??ã??ã??ã??ã??

Cake PHPã?§ Zend Frameworkã??ä?¿ã??

ã??ã??ã?¯ã??ã??ã??ã??ã??Zend Frameworkã?¯ã??ã??ã??ã?¬ã??ã??ã?¯ã??ã?¯ã??ã?¨å??å??ã?¯ã?¤ã??ã?¦ã??ã??ã??ã??ã??å®?é??ã?¯ä¸?ã?¤ä¸?ã?¤ã?®ã?©ã?¤ã??ã?©ã?ªã??ç?¬ç??ã??ã?¦ã??å??ä??ã?§ä?¿ã??ã??ã?¨ã??å?ºæ??ã??ã??ã??

ã??ã??ã?§ã??ã??ã?¦ã??ã??ã??ã??ã??ã??ã?©ã?¤ã??ã?©ã?ªã?®ä¸?ã??ã??ã??lib/Zend/Jsonã??ã??ã?©ã??ã??ã?¨ã??lib/Zend/Json.phpã??ã??ã?¡ã?¤ã??ã??æ??ã??å?ºã??ã?¦ã??ã??app/vendorsã??ã??ã?©ã??ã??ã??ã??ã??ã??ã??

ç¶?ã??ã?¦ã??include_pathã??è¨?å®?ã??ã??ã??ã??ã??ã??app/vendorsã??ã??ã?©ã??ã??ã??ã??zend_init.phpã??ã?¨ã??ã??ã??ã?¡ã?¤ã??ã??ä??ã??ã??次ã?®ã??ã??ã??æ?¸ã??ã??ã?¿ã??ã??ã??

<?php
ini_set('include_path', dirname(__FILE__). PATH_SEPARATOR .ini_get('include_path') );
?>

ã??ã??ã?§OKã??Zend_Jsonã??ä?¿ã??ã??ã??ã??ã??ã?ªã?£ã??ã?®ã?§ã??次ã?®ã??ã??ã??ã??ã?¦ JSONã??ç??æ??ã??ã??ã??ã??

// Zend_Jsonã??å?©ç?¨ã??ã??
App::import('Vendor', 'zendInit');
App::import('Vendor', 'Json', array('file' => 'Zend' . DS . 'Json.php'));

...

$ret = array('ret' => $v);
$ret = Zend_Json::encode($ret);

ã??ã??ã?§ã?¯ã??ã??ã??ã?¤ã??ã??ã??App:importã?®æ??ã??次ã?®ã??ã??ã??è¨?è¿°ã??ã?¦ã??ã??ã?®ã?§ã??ã??ã??

App::import('Vendor', 'Zend/Json');

ã??ã??ã??ã?¨ã??Zend/Jsonã??ã?©ã??ã??ã??ã??ã??ã??ã??ã??ã??ã??Zend/Json.phpã??ã?¯èª?ã?¿è??ã??ã?§ã??ã??ã?ªã??ã??ã??ã?§ã??ã??ã?¨ã??ã??ã??ã?¨ã?§ã??å??ã?®æ?¸ã??æ??ã??ã??ã?¦è§£決ã??ã??ã??ã?§ã??JSONã??ç??æ??ã??ã??ã??ã?®ã?§ã??æ??æ?¬èª?ã?®å??é¡?ã?¨æ??è¡?ã??å??ã??ã??æ??å??å??ã?®å?¦ç??ã?¯ã?§ã??ã??ã??ã??ã??ã?ªã??ã??ã??ã??ã??

JavaScriptå?´ã?®å?¦ç??

ç¶?ã??ã?¦ã??JavaScriptå?´ã??ã??ã?¡ã??ã?®æ¸¡ã??æ??ã??é??é??ã??ã?¦ã??ã??ã??ã?¯ã??æ??æ?¬èª?ã??å??ã??ã??ã??ã??
ç§?ã?®å?´å??ã??次ã?®ã??ã??ã??ã??ã??ã??解決ã??ã??ã??ã??ã??

  • å?¤ã?®å??ã??渡ã??ã?¯POSTã?§
  • urlencodeã??ã??ã??ã??

ã??ã??ã??ã??ã??ã??ã??ã?©ã?¡ã??ã??ã??ã??ã?§ã??è¡?ã??ã??ã?®ã??ã??ã??ã??ã??ã??ã??ã??ã??å®?é¨?ã??ã?¦ã??ã?ªã??ã?§ã??ã?? POSTã?®æ??ã??è?¯ã??æ°?ã??ã??ã??ã?®ã?§ã?©ã?¡ã??ã??ã??ã?£ã?¦ã??ã??ã??ã??ã??

$.post('http://example.com/cake/getjson', 'v=' + encodeURI(v),
	function(data) {
		...
	}, 'json'
);

ã??ã??ã?§å®?æ??ã??ã??ã??ã??è?¦å?´ã??ã??ã??ã??ã??ã??ã??

ã??ã??ã??ã??ã??ã??ã??ã??å®?æ??ã??è¦?ã??ã?¦ã??ã??ã??ã?¬ã?¸ã?§ã??ã??é??ç?ºæ??ã??ã??ã??ã??ï??

※このエントリは ブロガーにより投稿されたものです。朝日インタラクティブ および ZDNet Japan編集部の見解・意向を示すものではありません。
  • 新着記事
  • 特集
  • ブログ
このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]