JSON

ZendFramework2ѧϰ±Ê¼Ç jsonºÍajax

×ÖºÅ+ ×÷ÕߣºH5Ö®¼Ò À´Ô´£ºH5Ö®¼Ò 2015-09-26 17:06 ÎÒÒªÆÀÂÛ( )

ҪʵÏÖzf2µÄ¿ØÖÆÆ÷Êä³öjsonÊý¾Ý£¬Ö÷ÒªÒª½â¾ö2¸öÎÊÌ⣬µÚÒ»¸ö¾ÍÊÇÐÞ¸ÄheaderÍ·µÄContent-type²¿·ÖΪ

ZendFramework2ѧϰ±Ê¼Ç jsonºÍajax

ZendFramework2ѧϰ±Ê¼Ç jsonºÍajax£¬ÓÐÐèÒªµÄÅóÓÑ¿ÉÒԲο¼Ï¡£


ҪʵÏÖzf2µÄ¿ØÖÆÆ÷Êä³öjsonÊý¾Ý£¬Ö÷ÒªÒª½â¾ö2¸öÎÊÌ⣬µÚÒ»¸ö¾ÍÊÇÐÞ¸ÄheaderÍ·µÄContent-type²¿·ÖΪ



'Content-Type: application/json'£¬µÚ¶þ¸ö¾ÍÊÇÊä³öjsonÊý¾Ý¡£

ÐÞ¸ÄheaderÍ·£¬¿ÉÒÔÊÖ¶¯ÐÞ¸ÄÒ²¿ÉÒÔ×Ô¶¯Ð޸ġ£

×Ô¶¯Ð޸ĵķ½Ê½ÊÇ£¬Ê¹ÓÃzf2µÄJsonRenderer£¬»òÕßjsonµÄview helper£º

1£©Ê¹ÓÃJsonRendererµÄ·½·¨£ºzf2ĬÈÏʹÓÃPhpRender£¬Òò´ËÐèÒªÔÚÏîÄ¿Æô¶¯µÄʱºò£¬ÐÞ¸Ärenderer¡£ÔÚÆô¶¯Ä£¿é£¨Application£©µÄonBootStrap·½·¨ÖУ¬Ìí¼ÓÒ»¸örenderʼþµÄlinstener£¨registerJsonStratery£©£¬

public function onBootstrap($e) { // Register a render event $app = $e->getParam('application'); $app->getEventManager()->attach('render', array($this, 'registerJsonStrategy'), 100); }

ÔÚlisntenerÖн«jsonStratery sttachµ½ViewµÄEventMangerÉÏ£¬

public function registerJsonStrategy($e) { $matches = $e->getRouteMatch(); $moduleRootName = $matches->getMatchedRouteName();//$moduleaRootNameÊÇÔÚmodule.config.phpÖÐÅäÖõÄrouteÃû³Æ if ($moduleRootName != 'test') { //¸ÃÄ£¿éËùÓпØÖÆÆ÷¶¼ÉèÖÃΪJsonRenderer return; } $app = $e->getTarget(); $locator = $app->getServiceManager(); $view = $locator->get('Zend\View\View'); $jsonStrategy = $locator->get('ViewJsonStrategy'); $view->getEventManager()->attach($jsonStrategy, 100); }

2£©Ê¹ÓÃview helperµÄ·½·¨£ºÔÚ¿ØÖÆÆ÷ÀïÃæ½ûÓÃlayout£¨$view->setTerminal(true);£©»òÕßÔÚlayoutÀïÃæ²»ÒªÊä³öÈκÎhtml£¬È»ºóviewÀïÃæjsonÊä³ö£¬

$arr = array(); $arr[] = 1111; $arr[] = 'aaaa'; echo $this->json($arr);

ÊÖ¶¯ÐÞ¸ÄheaderÍ·µÄ·½Ê½£¬ÔÚviewÀïÃæ£¨½ûÓÃlayout£©»òÕßÔÚlayoutÀïÃæÊä³ö£¬

header('Content-Type: application/json');

zf2ÌṩÁËjson±à½âÂëÀàZend\Json\JsonÓÃÓÚjsonÊý¾Ý±à½âÂ룬¸ÃÀà»áÏȳ¢ÊÔʹÓÃphpº¯Êýjson_encodeºÍjson_decode½øÐбà½âÂ룬Èç¹ûphp²»Ö§³ÖÕâ2¸öº¯Êý£¬¸ÃÀàÔò»áʹÓÃphp½Å±¾½øÐбà½âÂ룬Òò´Ë£¬ÔÚzf2Öо¡Á¿Ê¹ÓøÃÀà¶ø²»ÒªÊ¹ÓÃphpµÄjson_encodeºÍjson_decode½øÐбà½âÂë¡£
Àý×Ó1£ºÈõ¥¸ö¿ØÖÆÆ÷µÄactionÊä³öjson£¬

·½·¨Ò»£º

//¿ØÖÆÆ÷´úÂë use Zend\Json\Json; //....... $arr = array(); $arr[] = 1111; $arr[] = 'aaaa'; $jsonData = Json::encode($arr); $view = new ViewModel(array( 'jsonData' => $jsonData )); $view->setTerminal(true); return $view; //»òÕß $arr = array(); $arr[] = 1111; $arr[] = 'aaaa'; $view = new ViewModel(array( 'arr' => $arr )); return $view; //ÊÓͼ´úÂë header('Content-Type: application/json'); echo $this->jsonData; //»òÕß echo $this->json($this->arr);


·½·¨¶þ£ºÐ½¨Ò»¸ölayoutÎļþÈçÏ£¬

//view/layout/json.phtml header('Content-Type: application/json');

¿ØÖÆÆ÷´úÂ룬

use Zend\Json\Json; //....... $layout = $this->layout(); $layout->setTemplate('layout/json'); $arr = array(); $arr[] = 1111; $arr[] = 'aaaa'; $jsonData = Json::encode($arr); $view = new ViewModel(array( 'jsonData' => $jsonData )); return $view;

ÊÓͼ´úÂ룬

echo $this->jsonData;

Àý×Ó2£ºÈÃij¸öÄ£¿é»òÕßij¸ö¿ØÖÆÆ÷¶¼Êä³öjson£¬½«renderer¸ÄΪJsonRenderer²¢ÇÒ¸ü»»Ä¬ÈϵÄphp layoutºó£¬¾ÍÖ±½ÓÔÚviewÖÐÊä³öjsonÊý¾ÝÁË£¬

public function onRoute(MvcEvent $e) { $matches = $e->getRouteMatch(); $moduleRootName = $matches->getMatchedRouteName();//$moduleaRootNameÊÇÔÚmodule.config.phpÖÐÅäÖõÄrouteÃû³Æ if ($moduleRootName != 'test') { //¸ÃÄ£¿éËùÓпØÖÆÆ÷¶¼ÉèÖÃΪJsonRenderer return; } $controllerName = $matches->getParam('controller');//$controllerNameÊÇÔÚmodule.config.phpÖÐÅäÖõÄcontrollerÃû³Æ if ($controllerName != 'Test\Controller\Test') { //¸Ã¿ØÖÆÆ÷ËùÓÐactions¶¼ÉèÖÃΪJsonRenderer return; } $e->getViewModel()->setTemplate("layout/json"); } public function onBootstrap(MvcEvent $e) { $eventManager = $e->getApplication()->getEventManager(); $moduleRouteListener = new ModuleRouteListener(); $moduleRouteListener->attach($eventManager); $eventManager->attach(MvcEvent::EVENT_ROUTE, array($this, 'onRoute'), -9000); $eventManager->attach('render', array($this, 'registerJsonStrategy'), 100); } public function registerJsonStrategy($e) { $matches = $e->getRouteMatch(); $moduleName = $matches->getMatchedRouteName(); $matches = $e->getRouteMatch(); $moduleRootName = $matches->getMatchedRouteName();//$moduleaRootNameÊÇÔÚmodule.config.phpÖÐÅäÖõÄrouteÃû³Æ if ($moduleRootName != 'test') { //¸ÃÄ£¿éËùÓпØÖÆÆ÷¶¼ÉèÖÃΪJsonRenderer return; } $controllerName = $matches->getParam('controller');//$controllerNameÊÇÔÚmodule.config.phpÖÐÅäÖõÄcontrollerÃû³Æ if ($controllerName != 'Test\Controller\Test') { //¸Ã¿ØÖÆÆ÷ËùÓÐactions¶¼ÉèÖÃΪJsonRenderer return; } $app = $e->getTarget(); $locator = $app->getServiceManager(); $view = $locator->get('Zend\View\View'); $jsonStrategy = $locator->get('ViewJsonStrategy'); $view->getEventManager()->attach($jsonStrategy, 100); }
Ö®ºó£¬¾Í¿ÉÒÔÖ±½ÓÔÚä¯ÀÀÆ÷¶ËµÄjavascriptÖÐͨ¹ýajax»ñÈ¡jsonÊý¾ÝÁË£º
<script lang="javascript"> $(document).ready(function(){ $("#b01").click(function(){ htmlobj=$.ajax({url:"/test/json",async:false}); alert(htmlobj.responseText); }); }); </script>







¡¡

1.±¾Õ¾×ñÑ­ÐÐÒµ¹æ·¶£¬ÈκÎ×ªÔØµÄ¸å¼þ¶¼»áÃ÷È·±ê×¢×÷ÕߺÍÀ´Ô´£»2.±¾Õ¾µÄÔ­´´ÎÄÕ£¬Çë×ªÔØÊ±Îñ±Ø×¢Ã÷ÎÄÕÂ×÷ÕߺÍÀ´Ô´£¬²»×ðÖØÔ­´´µÄÐÐΪÎÒÃǽ«×·¾¿ÔðÈΣ»3.×÷ÕßͶ¸å¿ÉÄܻᾭÎÒÃDZ༭Ð޸Ļò²¹³ä¡£

Ïà¹ØÎÄÕÂ
  • ÀûÓÃJSONºÍAJAXʵÏÖWebÊý¾ÝµÄ×Ô¶¯±£´æÓë»Ö¸´ ¼ÆËã»úÓëÐÅÏ¢¼¼Êõ

    ÀûÓÃJSONºÍAJAXʵÏÖWebÊý¾ÝµÄ×Ô¶¯±£´æÓë»Ö¸´ ¼ÆËã»úÓëÐÅÏ¢¼¼Êõ

    2015-09-24 16:04

ÍøÓѵãÆÀ
·