zoukankan      html  css  js  c++  java
  • 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:把第三个参数中的所以和第一个参数相同的内容换成第二个

  • 相关阅读:
    序列操作
    random模块
    windows系统杀掉explorer.exe进程后黑屏
    Apache + SVN: Could not open the requested SVN filesystem
    使用ps命令批量删除相关进程
    'pybot.bat'不是内部或外部命令,也不是可运行的程序
    安装wxpython的时候报错 “no installation of python 2.7 found in registy”
    wxPython 使用Dialog实现模态对话框
    Python os.system()出现乱码
    Git操作reset --hard失误
  • 原文地址:https://www.cnblogs.com/hhfhmf/p/4714413.html
Copyright © 2011-2022 走看看