AngularJs POST 请求 json 无效
AngularJs POST request for json not working
嗨,我尝试了 POST json 两种方式的数据,它的响应为 null
var jsonData = $scope.addedCat;
console.log(jsonData);
var request = $http({
method:"POST",
url:base_url+"Category_controller/json_test",
data: JSON.stringify(jsonData),
dataType: "application/json"
});
request.success(
function(response){
console.log(response);
});
var cat_j = $scope.addedCat;
var data = $.param({ json:JSON.stringify(cat_j)});
$http.post(base_url+"Category_controller/json_test/",data).success(function(data, status) {
console.log(data);
console.log(status);
})
我们如何解码 php 中的 json 数据。
我在 Codeignitor 框架中这样尝试过。
$cjson = $this->input->post('jsonData');
$cat_json = json_decode($cjson);
echo json_encode($cat_json);
在您的服务器 php 文件上,试试这个,您会得到从客户端传递的参数:
//get parameters
$params = json_decode(file_get_contents('php://input'), true); //read values from angular directive
$data = json_decode(file_get_contents('php://input'), true);
并做 $data['jsonData']
现在这个 $data['jsonData'] === $this->input->post('jsonData');
超全局 $_post 只支持 application/x-www-form-urlencoded
和 multipart/form-data-encoded
.
对于 application/json
,您应该使用 php://input
,它可以为您提供数据的原始字节。以下是如何获取输入数据的示例代码:
// 获取原始 POST 数据
$rawData = file_get_contents("php://input");
// 如果无效 json
,则此 returns 为 null
print_r(json_decode($rawData));
嗨,我尝试了 POST json 两种方式的数据,它的响应为 null
var jsonData = $scope.addedCat;
console.log(jsonData);
var request = $http({
method:"POST",
url:base_url+"Category_controller/json_test",
data: JSON.stringify(jsonData),
dataType: "application/json"
});
request.success(
function(response){
console.log(response);
});
var cat_j = $scope.addedCat;
var data = $.param({ json:JSON.stringify(cat_j)});
$http.post(base_url+"Category_controller/json_test/",data).success(function(data, status) {
console.log(data);
console.log(status);
})
$cjson = $this->input->post('jsonData');
$cat_json = json_decode($cjson);
echo json_encode($cat_json);
在您的服务器 php 文件上,试试这个,您会得到从客户端传递的参数:
//get parameters
$params = json_decode(file_get_contents('php://input'), true); //read values from angular directive
$data = json_decode(file_get_contents('php://input'), true);
并做 $data['jsonData']
现在这个 $data['jsonData'] === $this->input->post('jsonData');
超全局 $_post 只支持 application/x-www-form-urlencoded
和 multipart/form-data-encoded
.
对于 application/json
,您应该使用 php://input
,它可以为您提供数据的原始字节。以下是如何获取输入数据的示例代码:
// 获取原始 POST 数据
$rawData = file_get_contents("php://input");
// 如果无效 json
,则此 returns 为 nullprint_r(json_decode($rawData));