Yii框架實現ajax方法非常簡單,由於採用urlmanager來美化ajax請求,故請求的URL爲/index.php/user/Ajax,指的是UserController的ajax方法。
Yii::app()->request->baseUrl 作爲前綴可以避免使用絕對路徑方便移植。
/* *當input失去焦點時調用jquery中的jquery.ajax() */ $('#User_name').bind('blur',function(){ //alert($(this).val()); var id = "1"; var val = "this is ajax test!!!"; $.ajax({ type:"POST", dataType:"json", data:{"id":id,"val":val}, url:"<?php echo Yii::app()->request->baseUrl;?>/index.php/user/Ajax", /*特別注意的地方, 需要將yii的urlmanager配置才能成功,不要使用index.php?r=user/Ajax,會報錯 */ success:function(json) { alert(json.val); }, error:function(jqXHR, textStatus, errorThrown){ alert(this.url); }, statusCode:{ 404:function(){alert('not found page');} } });
然後在UserController.php里加入一個新的動作來響應ajax中的url參數
public actionAjax(){ if(Yii::app()->request->isAjaxRequest) { $id = (int)Yii::app()->request->getParam('id'); $val = Yii::app()->request->getParam('val'); echo CJSON::encode(array("val"=>$val)); } }
通過Yii::app()->request->getParam($attrLabel) 來獲取$attrLabel來獲取ajax請求的參數值。
通過Yii的核心類CJSON的encode方法來格式化生成json數據。