• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

thinkphp的Ajax实现原理

php 搞代码 3年前 (2022-01-23) 14次浏览 已收录 0个评论
文章目录[隐藏]

<body>

学习thinkphp框架Ajax(鉴于刚才太懒没有放代码,对所有的回答者说声对不起)
我的想法是:前台触发Ajax –>> 进入控制器 –>> 从数据库取数 –>> 直接返回前台处理数据
怎样可以不通过模板的渲染直接从控制器返回数据?

问题应该出在$this->ajaxReturn();
我把ajaxReturn()删除,改用var_dump($data)
前台收到数据如下

问题终于解决了,原因在于查出来的并不是一个json格式,ajaxReturn()传输的不是json格式,所以前台接收到的是array([0]=>array({})),所以也不能用$.parseJSON(data)解析,
改用$.each(data[0],function(i,n){})来解析数据

回复内容:

<body>

学习thinkphp框架Ajax(鉴于刚才太懒没有放代码,对所有的回答者说声对不起)
我的想法是:前台触发Ajax –>> 进入控制器 –>> 从数据库取数 –>> 直接返回前台处理数据
怎样可以不通过模板的渲染直接从控制器返回数据?

问题应该出在$this->ajaxReturn();
我把ajaxReturn()删除,改用var_dump($data)
前台收到数据如下

问题终于解决了,原因在于查出来的并不是一个json格式,ajaxReturn()传输的不是json格式,所以前台接收到的是array([0]=>array({})),所以也不能用$.parseJSON(data)解析,
改用$.each(data[0],function(i,n){})来解析数据

不是很懂你的意思,Ajax请求到后台获取数据之后通过前端模板引擎渲染到前台,怎么是“通过模板的渲染直接从控制器返回数据”?,返回数据还需要模板引擎吗?模板引擎的使用是避免拼接字符串,便于更好的处理ajax返回的数据。因为ajax请求数据在项目里经常用到,可以自己封装一下方法,比如我用的方式:

<code>protected $msg; //返回数据失败 protected function fail($mode=false,$type="json"){    $this->msg['status'] = 'failure';    if(true===$mode){ <mark>6来源gaodaimacom搞#^代%!码网</mark><strong>搞gaodaima代码</strong>     $this->reply($type);    }  }//返回数据成功protected function succeed($mode=false,$type="json"){    $this->msg['status'] = 'success';    if(true===$mode){      $this->reply($type);    }  }//返回的数据protected function setResult($result){    $this->msg['result'] = $result;  }protected function reply($type="json"){    if($type == 'string'){      print_r($this->msg);    }else{      echo json_encode($this->msg);    }    exit;  }</code>

使用方法:
1.请求成功:
$this->setResult($data);
$this->succeed(true)
2.请求失败:
$this->setResult(“请求失败”) //可以不用写
$this->fail(true)

js中ajax请求:

<code>$.post('',$data).done(function(rs){        var rs = $.parseJSON(rs);        if(rs.status == 'success') {          var msg = rs.result;   //获取数据                 } else {          //请求失败的处理        }      });</code>

$this->ajaxReturn($data);

以前是
$this->assian(‘data’, $data);
$this->display();

现在是
$this->ajaxReturn($data);

不错不错!学习了!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:thinkphp的Ajax实现原理

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址