今天做php的一个项目,打算用jquery ajax向后台发送post类型请求,发送的数据类型是json。但是频频出错,不是报500错误,就是在后取的值为空的。几经周折才把问题解决。
总结了两种ajax发送post请求的写法:
前端关键代码1:
//变量data是我的js对象经过JSON.stringify(data)处理之后的json字符串
$.ajax({
contentType: 'application/json; charset=utf-8', //这行可有可无都行
type: 'POST',
url: "addinvest", //thinkphp的控制器方法
data: data,
success: function (message) {
console.log(message);
},
error: function (message) {
console.log(message);
}
});
后端关键代码1:
public function addinvest(){
$inputjson = file_get_contents('php://input');
$obj = json_decode($inputjson);
if(is_object($obj)){
echo ($obj->invest_name);
}
}
前端代码2:
$.ajax({
// contentType: 'application/json; charset=utf-8',
contentType:'application/x-www-form-urlencoded', //这行可有可无都行
type: 'POST',
url: "addinvest",
data:{
data:data,
// "data":data //也可以
},
success: function (message) {
console.log(message);
},
error: function (message) {
console.log(message);
}
});
后端代码2:
public function addinvest(){
$jsonstr = $_POST["data"];
$obj = json_decode($jsonstr);
echo ($obj->invest_name);
}
需要注意:
echo可以返回数值和字符串,但还不可以返回对象;非数组类型的json数据在后台不能转换成数组.但是可以转换成对象。