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数据。