为啥thinkphp3.2无法获取到json提交的数据?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥thinkphp3.2无法获取到json提交的数据?相关的知识,希望对你有一定的参考价值。

我用于提交的json代码是:
$(function()
………………略…………
$('.button').click(function(event)
event.preventDefault();
var username=$('#content .utext').val();
var password=$('#content .ptext').val();
var code=$('#content .code').val();
………………略…………
wintq('正在登录,请稍后...',4,200,0,'');
$.ajax(
url:'__SELF__',
dataType:"json",
type:'POST',
cache:false,
data:'username='+username+'&password='+password+'&code='+code,
success: function(data)
if (data.s=='ok')
wintq('登录成功',1,2000,0,'');
else
rcode($('#verify'));
wintq(data.s,3,2000,1,'');


);
);
…………略……
);

提交到php的控制器的__SELF__中对应的方法后,却无法获取当前提交状态:
function login()
show_bug(REQUEST_METHOD); //这里一直显示的是默认的GET方法,但我是用AJAX POST提交的
if(IS_POST)
show_bug("IS_POST"); //自定义用于界面显示的方法

if(IS_AJAX)
show_bug("IS_AJAX");

参考技术A data:username:name,password:password
jq的AJAX不是这样写的吗追问

也这样写过啊,但换成这样仍然读取不到提交的方式,我在ajax中用的Post提交,但结果总是默认的get方式,根本就不响应

追答

可以直接用$.post()吗?

追问

找到原因了。在火狐上调式了下,发现信息往返都正确。但如果直接打印$_POST之类的,会一直显示为空,而IS_AJAX也是false。不知道咋回事,但只要跟着调试走,该跳转的时候还会跳转。。。

追答

你ajax上去的是POST提交喔 是IS_POST

本回答被提问者和网友采纳

thinkphp中怎么返回json数据

使用thinkphp框架开发,不知道如何返回JSON字符串,ajax无法调用 有三种方式可以返回

1、若是数据库实体,可以使用toJson()方法
$user = User::get(1); echo $user->toJson();

2、若非数据库实体,可以使用json view方法,thinkphp除了实现response对象,还实现了jsonResponse若非数
$data = [    'result'=>'success',    'msg'=>'操作成功!' ]; //class Json extends Response
return json($data);


3、若非数据库实体,可以使用json_encode()方法:
$data = [    'result'=>'success',    'msg'=>'操作成功!' ];
return json_encode($data);

thinkphp5 ajax如何返回json

参考技术A $data['status']  = 1;
$data['content'] = 'content';
$this->ajaxReturn($data);

通过ajaxReturn来实现。

本回答被提问者采纳

以上是关于为啥thinkphp3.2无法获取到json提交的数据?的主要内容,如果未能解决你的问题,请参考以下文章

无法将 Tableview 单元格值添加到 JSON 参数,为啥会为零?迅速

在 userModel | 查看提交的数据json 但无法获取数据

我用的是thinkphp3.2版本,为啥我怎么编写数据库都更新不了数据

thinkphp3.2用户登录ajax提交验证

为啥某些浏览器无法获取JSON?

thinkphp3.2 请求怎么发送 put