Thinkphp下实现ajax异步返回

ajax可以向控制器post方式传递数据,并返回。

JS端代码

$('#send-btn').click(function(){
        
        $username=$('input[name="username"]');
        $content=$('textarea[id="content"]')
        if(!$username.val()){
            alert('账号不能为空!');
            $username.focus();
        }else{
            if(!$content.val()){
                alert('内容不能为空!');
                $content.focus();
            }
        }
        
        $.post(url,{username:$username.val(),content:$content.val()},function(data){
            if(data.status){
                
                alert('发布成功');
                $('#close').click();
                
            }else{
                alert('发布失败');
            }
        },'json');
        
    })

返回后执行function方法 $.post第一个参数的地址,第二个参数是要传递的参数,第三个是返回执行的方法,第四个是返回类型

控制器端代码

       $content= $_POST['content'];
       $data=array(
           'username'=>I('username'),
           'content'=>I('content'),
           'time'=>time(),
       );
       
       if(M('wish')->data($data)->add()){
           $data['content']=phiz_replace($data['content']);
           $data['time']=date('Y-m-d H:i:s',$data['time']);
           $data['status']=1;
           $this->ajaxReturn($data,'json');
       }else{
           $this->ajaxReturn(array('status'=>0),'json');

ajaxReturn第一个参数要传递的信息,可以是数组,第二个是类型,可以通过配置Thinkphp设置不同的类型

/**
 * 表情替换
 */
 function phiz_replace($content){
     
     preg_match_all('/[.*?]/is',$content,$arr);
      if($arr[0]){
         $phiz=F('phiz','','./Public/');
         foreach ($arr[0] as $value)
             foreach ($phiz as $k=>$v){
             if($value==$v){
                 $content=str_replace($v,'<img src="/blog/App/Home/View/Public/Images/phiz/'.$k.'.gif"/>',$content);
             }
         }
     } 
     return $content;
 }

         preg_match_all正则匹配,在第二个参数中找和第一个参数类似的内容,存放在第三个参数中,按数组形式存放,第四个参数如果是PREG_PATTERN_ORDER,则$arr[0]保所

以匹配到的结果,$arr[1]保持匹配到的第一个字组,$arr[2]保持第二个,以此类推,如果第四个参数是PREG_SET_ORDER,则$arr[0]保持第一个,$arr[1]保持第二个,以此类推。

         F方法是Thinkphp的缓冲方法,第一个参数是文件名,第二个参数为空则是读取数据,不为空则是要存入的内容,'./Public'为根目录下的Public文件,也就是工程名下的内容,

        str_replace:把第三个参数中的所以和第一个参数相同的内容换成第二个

原文地址:https://www.cnblogs.com/hhfhmf/p/4714413.html