phpバックグラウンドはajaxがpost要求を送信してjsonデータを提出する2つの方法を受信する


今日phpのプロジェクトをして、jquery ajaxでバックグラウンドにpostタイプリクエストを送信するつもりで、送信するデータタイプはjsonです.しかし、頻繁にエラーが発生するのは、500エラーを報告するのではなく、後で取った値が空です.幾多の紆余曲折を経てやっと問題を解決した.
ajaxがpostリクエストを送信する2つの書き方をまとめました.
フロントエンドキー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データはバックグラウンドでは配列に変換できない.ただし、オブジェクトに変換できます.