Thinkphp无法获得AJAX post的数据,很简单的问题就是无法解决?

发布于 2022-09-07 21:54:18 字数 1663 浏览 13 评论 0

thinkphp 5.0.7 ,view里使用ajax提交post数据,数据提交后,无法通过tp打印出来。

研究了好久,实在搞不清是什么地方出问题了。

一个很简单的测试代码,

前端:


<html>
    <head>
        <title>title</title>
        <script src="http://libs.baidu.com/jquery/1.9.0/jquery.min.js"></script>
        <script>
         $(function(){
            $("#btn").click(function(){
              
              
                $.ajax({
                    url:"/Home/test/index",
                   type: "POST",
                    dataType:"",
                    data:{id:3},
                    //async: false,
                    success:function(data){
                       
                    
                       alert(data.id);
                    }
                    
                    
                });
                
            });
        });
        </script>
    </head>
    <body>
        <input type="button" id="btn" value="button">
    </body>
</html>

服务器端:

class Test extends Controller {

        public function index()
        {
         
            $dd['id'] = $_POST['id'];
           
            $dd['value'] = 'fff';
            print_r(json_encode($dd));
            
            return $this->fetch();
     
    }

最后,页面输出内容是:

{"id":null,"value":"fff"} 

这里,前台的id的值,也就是$_POST['id'] 始终是null,

而且前台alert(data.id); 出来的内容也是undefined。

network里面的内容,可以看到post的数据和post成功,但是在前端alert和后台都获取不到post的数据

图片描述

是什么地方出问题了呢。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

残龙傲雪 2022-09-14 21:54:18

今天又研究了一天,基本解决了。

问题主要是出在print_r(json_encode($dd)); 这条语句中的json_encode()上。

在PHP环境中,使用json_encode()完全没有问题,但是在thinkphp环境下,使用json_encode()就会导致ajax post失败,

在thinkphp中,要禁止使用json_encode(),而需要换成 $this->ajaxReturn($array);

这样就可以在控制器中post成功,

虽然具体原因不清楚,但是确实这样调试成功了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文