Heim >Backend-Entwicklung >PHP-Tutorial >Jquery ajax post 提交给ThinkPHP的控制器,但是获取不到$_POST,应该怎么写呢
前端的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); } });
<?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();}
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 了。一下子就成功拉。确实是这个出问题了。