CodeIgniter4 のプロジェクトに取り組んでいます。endpoint に対して Ajax 呼び出しを実行しようとしています(/adjustments/store)
。CodeIgniter を使用してフォームを検証し、ビューに検証エラーを表示しています。問題は、初めてフォームを送信したときに機能し、いくつかの検証エラーが表示されることです。しかし、フォームを正しく入力して(検証エラーを取得しないために)再度送信すると、コンソールに403禁止エラーが表示されます。
Ajax 呼び出し
$.ajax({
type: 'post',
url: '/adjustments/store',
dataType: 'html',
data: {
number,
date,
type,
account,
description,
adjData,
csrf_test_name
},
success: function (res) {
if (IsJsonString(res)) {
const response = JSON.parse(res);
if (response.hasOwnProperty('validation_errors')) {
const errors = response.validation_errors;
for (err in errors) {
$(`input[name=${ err }]`)
.parent()
.append(`<small class="text-danger">${ errors[err] }</small>`)
}
}
}
function IsJsonString(str) {
try {
JSON.parse(str);
} catch (e) {
return false;
}
return true;
}
console.log(res);
}
CodeIgniter コントローラ
public function store () {
$data = $this->request->getPost(NULL);
// Validate
if (! $this->validate([
'number' => 'required',
'date' => 'required',
'type' => 'required',
'adjData' => 'required',
]))
{
echo json_encode(['validation_errors' => $this->validator->getErrors()]);
return;
}
echo json_encode($data);
}
これに対する解決策はありますか?