Jquery ajax post 提交给ThinkPHP的控制器,但是获取不到$_POST,应该怎么写呢

时间:2022-09-24 15:50:32
前端的js是这样的
                
                var uid = '10002';
                var a = 'get_users';

                jQuery.ajax({
                    url: "http://localhost:8099/thinkphp111/index.php?s=/Index/index.html",
                    type: "POST",
                    data: { uid: uid, a: a },
                    success: function (jsonResult) {
                        alert(jsonResult);
                    },
                    error: function (e) {
                        alert(e);
                    }
                });
 


php部分是这样的

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends HomeController {
    
    public function aa()
    {
        $output = array();
        $a = $_POST['a'] ? $_POST['a'] : '';
      
         echo $a;
}
        
 public function index(){
        $this->aa();
}        


但是执行后一直返回的结果是空。正常情况下应该返回'get_users'。请问各位这个是为什么呢?

8 个解决方案

#1


index.php ?s=/Index/index.html
为什么是这样?路由是怎么写的?
你能确定 index 方法被执行了吗?

#2


我确定方法被执行了。
因为我在php端,如果我直接给$_POST['a']赋值,比如$_POST['a']=‘getusers’
那么我在html里面执行那个js。立即alert出来getusers。说明是执行的。只是post的值PHP那里获取不到。
路由我没有设置过。

#3


你是说
<?php
namespace Home\Controller;
use Think\Controller;
$_POST['a']=‘getusers’;
class IndexController extends HomeController {
     
    public function aa()
    {
        $output = array();
        $a = $_POST['a'] ? $_POST['a'] : '';
       
         echo $a;
}
         
 public function index(){
        $this->aa();
}  
然后浏览器地址栏 http://localhost:8099/thinkphp111/index.php?s=/Index/index.html
这样执行的吗?

#4


Jquery ajax post 提交给ThinkPHP的控制器,但是获取不到$_POST,应该怎么写呢

看图片就知道拉啊

#5


THinkPHP 中,你的ajax传递的参数别用 a ,m, g这类的参数名,这是TP默认获取方法,控制器,分组的,你把 a替换成其他的应该就可以了 

#6


哇,太感谢a583049958 了。一下子就成功拉。确实是这个出问题了。

Jquery ajax post 提交给ThinkPHP的控制器,但是获取不到$_POST,应该怎么写呢

#7


引用 5 楼 a583049958 的回复:
THinkPHP 中,你的ajax传递的参数别用 a ,m, g这类的参数名,这是TP默认获取方法,控制器,分组的,你把 a替换成其他的应该就可以了 

我想问一下, 你是指改那个地方? 楼主, 你又是怎么弄好的呢?

#8


引用 7 楼 ACMore_Xiong 的回复:
Quote: 引用 5 楼 a583049958 的回复:

THinkPHP 中,你的ajax传递的参数别用 a ,m, g这类的参数名,这是TP默认获取方法,控制器,分组的,你把 a替换成其他的应该就可以了 

我想问一下, 你是指改那个地方? 楼主, 你又是怎么弄好的呢?

木事啦, 我已经知道啦。
$.ajax({
        type: 'POST',
        url: '/index.php/Forum/checkNote',
        //dataType: 'json',
        data: {'note_title': title,'note_content': content,'note_type': type, 'srcUrl': srcUrl, 'note_author_id': '123456'},
        success: function(msg) {
            alert("发表成功!" + msg);
            location.href = '/index.php/Forum/noteList?type=' + type;
        },
        error: function(XMLHttpRequest, textStatus, errorThrown,msg) {
            alert(XMLHttpRequest.status);
            alert(XMLHttpRequest.readyState);
            alert(textStatus);
            alert(errorThrown);
            alert(msg);
        },
    });
这是我的ajax 方法,之前因为url写得不对, 所以一直是404,现在没问题啦~~

#1


index.php ?s=/Index/index.html
为什么是这样?路由是怎么写的?
你能确定 index 方法被执行了吗?

#2


我确定方法被执行了。
因为我在php端,如果我直接给$_POST['a']赋值,比如$_POST['a']=‘getusers’
那么我在html里面执行那个js。立即alert出来getusers。说明是执行的。只是post的值PHP那里获取不到。
路由我没有设置过。

#3


你是说
<?php
namespace Home\Controller;
use Think\Controller;
$_POST['a']=‘getusers’;
class IndexController extends HomeController {
     
    public function aa()
    {
        $output = array();
        $a = $_POST['a'] ? $_POST['a'] : '';
       
         echo $a;
}
         
 public function index(){
        $this->aa();
}  
然后浏览器地址栏 http://localhost:8099/thinkphp111/index.php?s=/Index/index.html
这样执行的吗?

#4


Jquery ajax post 提交给ThinkPHP的控制器,但是获取不到$_POST,应该怎么写呢

看图片就知道拉啊

#5


THinkPHP 中,你的ajax传递的参数别用 a ,m, g这类的参数名,这是TP默认获取方法,控制器,分组的,你把 a替换成其他的应该就可以了 

#6


哇,太感谢a583049958 了。一下子就成功拉。确实是这个出问题了。

Jquery ajax post 提交给ThinkPHP的控制器,但是获取不到$_POST,应该怎么写呢

#7


引用 5 楼 a583049958 的回复:
THinkPHP 中,你的ajax传递的参数别用 a ,m, g这类的参数名,这是TP默认获取方法,控制器,分组的,你把 a替换成其他的应该就可以了 

我想问一下, 你是指改那个地方? 楼主, 你又是怎么弄好的呢?

#8


引用 7 楼 ACMore_Xiong 的回复:
Quote: 引用 5 楼 a583049958 的回复:

THinkPHP 中,你的ajax传递的参数别用 a ,m, g这类的参数名,这是TP默认获取方法,控制器,分组的,你把 a替换成其他的应该就可以了 

我想问一下, 你是指改那个地方? 楼主, 你又是怎么弄好的呢?

木事啦, 我已经知道啦。
$.ajax({
        type: 'POST',
        url: '/index.php/Forum/checkNote',
        //dataType: 'json',
        data: {'note_title': title,'note_content': content,'note_type': type, 'srcUrl': srcUrl, 'note_author_id': '123456'},
        success: function(msg) {
            alert("发表成功!" + msg);
            location.href = '/index.php/Forum/noteList?type=' + type;
        },
        error: function(XMLHttpRequest, textStatus, errorThrown,msg) {
            alert(XMLHttpRequest.status);
            alert(XMLHttpRequest.readyState);
            alert(textStatus);
            alert(errorThrown);
            alert(msg);
        },
    });
这是我的ajax 方法,之前因为url写得不对, 所以一直是404,现在没问题啦~~