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