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

WBOY
풀어 주다: 2016-06-23 13:30:46
원래의
1466명이 탐색했습니다.

前端的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部分是这样的
<?phpnamespace 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'。请问各位这个是为什么呢?


回复讨论(解决方案)

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

我确定方法被执行了。
因为我在php端,如果我直接给$_POST['a']赋值,比如$_POST['a']=‘getusers’
那么我在html里面执行那个js。立即alert出来getusers。说明是执行的。只是post的值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
这样执行的吗?



看图片就知道拉啊

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

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿