CodeIgniter_3.1.11 - $this->input->post 为空

问题描述 投票:0回答:1

我在使用

$this->input->post('policy')
时遇到了一些问题。有时(不规则次数的尝试中有 1 次)它为 null,这会导致进一步的代码出错,如果我用
php://input
检查它,我可以看到有效的 json。
示例:

public function createPolicy()
{
    $rawPostData = file_get_contents('php://input');
    $inputPost = $this->input->post('policy');
    
    $this->applicationLogger->debug('DEBUG', 'Raw POST data: ', $rawPostData);
    // it log valid json
    
    $this->applicationLogger->debug('DEBUG', 'POST policy: ',json_encode($inputPost));
    // it log null
}

Vue代码:

let data = {
    policy: this.policy
};
axios
    .post('Controller/createPolicy', data, {
        headers: {
            'Content-Type': 'application/json'
        }
    })

这是我的htaccess:

RedirectMatch 404 /\.git

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/server-status
RewriteRule ^(.*)$ index.php/$1 [L]

什么可能导致此问题?

php post codeigniter-3
1个回答
0
投票

Content-Type
设置为
application/json
时,数据在请求正文中以原始 JSON 形式发送。

CodeIgniter 3 本身不支持将 Content-Type: application/json 请求中发送的 JSON 输入解析为 $this->input->post()。相反,需要 php://input 来处理 JSON 数据

您可以使用以下方式解析它:

$rawPostData = file_get_contents('php://input');
$decodedData = json_decode($rawPostData, true);

$policy = isset($decodedData['policy']) ? $decodedData['policy'] : null;

类似问题:在CodeIgniter中检索JSON POST数据

© www.soinside.com 2019 - 2024. All rights reserved.