php后台接收ajax发送post请求提交json数据的两种方式

今天做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数据在后台不能转换成数组.但是可以转换成对象。

你可能感兴趣的:(php学习,js,ajax,php)