我如何处理来自“$this->request->getRawInput()”的数据 CodeIgniter4
How Can I Process Data From "$this->request->getRawInput()" CodeIgniter4
这是我的 ajax 方法,它从 html table
创建表单数据
$('#updateStudentInfoBtn').click(函数(e){
// var delcare
let studentUUID = $('[name=studentUUID]').val();
let apiUrl = "/api/students/studentUUID";
var formObj = {
firstname : $('[name="firstname"]').val(),
middlename : $('[name="middlename"]').val(),
lastname : $('[name="lastname"]').val(),
gender : $('[name="gender"] option:selected').val(),
dob : $('[name="dob"]').val(),
admission_date : $('[name="admission_date"]').val(),
admission_stage : $('[name="admission_stage"]').val(),
current_stage : $('[name="current_stage"]').val(),
current_section : $('[name="current_section"]').val(),
name_of_guardian : $('[name="name_of_guardian"]').val(),
relationship_to_student : $('[name="relationship_to_student"]').val(),
occupation : $('[name="occupation"]').val(),
phone_no : $('[name="phone_no"]').val(),
};
var form_data = new FormData();
for ( var key in formObj ) {
form_data.append(key, formObj[key]);
}
$.ajax({
method: "PUT",
url: apiUrl,
data: form_data,
processData : false,
contentType : false,
cache: false,
success: function(res){
response = JSON.stringify(res);
if(response.status == 201) {
// show success alert
}
//location.href="/admin/allstudents";
},
error: function(err){
console.log(err);
}
});
});
这是我的 php 脚本,用于检索通过 put 方法发送的数据;省略了 class 部分。
public function update($studentUuid = null)
{
$studentModel = new StudentModel();
$studentData = $studentModel->where('uuid', $studentUuid)->first();
$input = $this->request->getRawInput();
return print_r($input);
}
print_r 的结果给我这个我不知道如何处理数据的文本::
Array ( [------WebKitFormBoundaryQFcTXWiBZMLhD6ea Content-Disposition:_form-data;_name] => "firstname" Phinehas ------WebKitFormBoundaryQFcTXWiBZMLhD6ea Content-Disposition: form-data; name="middlename " Toast ------WebKitFormBoundaryQFcTXWiBZMLhD6ea Content-Disposition: form-data; name="lastname" Mord ------WebKitFormBoundaryQFcTXWiBZMLhD6ea Content-Disposition: form-data; name="gender" 女 ------ WebKitFormBoundaryQFcTXWiBZMLhD6ea Content-Disposition: form-data; name="dob" 1989 年 11 月 11 日星期六 ------WebKitFormBoundaryQFcTXWiBZMLhD6ea Content-Disposition: form-data; name="admission_date" 2001 年 5 月 10 日星期四 -- ----WebKitFormBoundaryQFcTXWiBZMLhD6ea 内容配置:表单数据;名称="admission_stage" class 6 ------WebKitFormBoundaryQFcTXWiBZMLhD6ea 内容配置:表单数据;名称="current_stage" form 3 ------WebKitFormBoundaryQFcTXWiBZMLhD6ea Content-Disposition: form-data; name="current_section" 黄色 ------WebKitFormBoundaryQFcTXWiBZMLhD6ea Content-Disposition: form-data; name="name_of_guardian" 博士 [=2 4=] Sapaa ------WebKitFormBoundaryQFcTXWiBZMLhD6ea Content-Disposition: form-data; name="relationship_to_student" 父亲 ------WebKitFormBoundaryQFcTXWiBZMLhD6ea Content-Disposition: form-data; name="occupation" Manager ------WebKitFormBoundaryQFcTXWiBZMLhD6ea Content-Disposition: form-data; name="phone_no" xxx-xxx-xxxx ------WebKitFormBoundaryQFcTXWiBZMLhD6ea-- )
获取 formDAta() 使用
$this->request->getPost('item');
适用于 json 或 formData 请求正文
$raw=(array)$this->request->getVar()
为了测试使用 postman 所以下载它
second if json request set request postman to put
但如果 formDAta 请求设置请求 post 则添加此字段
形成数据值
var form_data = new FormData();
//this works for you
form_data.append('_method', 'PUT');
https://codeigniter.com/user_guide/incoming/methodspoofing.html
for ( var key in formObj ) {
form_data.append(key, formObj[key]);
}
form_data.append('_method', 'PUT');
$.ajax({
method: "POST",
url: apiUrl,
data: form_data,
processData : false,
contentType : false,
cache: false,
success: function(res){
response = JSON.stringify(res);
if(response.status == 201) {
// show success alert
}
//location.href="/admin/allstudents";
},
error: function(err){
console.log(err);
}
});
我想通了,不知道它是否适用于每种情况,但它对我有用...我创建了一个帮助程序文件(以隐藏丑陋之处),它将值提取到常规关联数组中:
put_helper.php:
function getPut($raw_input)
{
$input_string = $raw_input[array_keys($raw_input)[0]];
preg_match('#\{(.*?)\}#', $input_string, $match);
$json_string = '{' . $match[1] . '}';
$data = (array) json_decode($json_string);
return $data;
}`
在我的控制器中:
public function update($id = null)
{
helper('put_helper');
$data = getPut((array) $this->request->getRawInput());
`
我在网上找不到任何其他解决方案...
希望它能帮到别人 ;)
这是我的 ajax 方法,它从 html table
创建表单数据$('#updateStudentInfoBtn').click(函数(e){
// var delcare
let studentUUID = $('[name=studentUUID]').val();
let apiUrl = "/api/students/studentUUID";
var formObj = {
firstname : $('[name="firstname"]').val(),
middlename : $('[name="middlename"]').val(),
lastname : $('[name="lastname"]').val(),
gender : $('[name="gender"] option:selected').val(),
dob : $('[name="dob"]').val(),
admission_date : $('[name="admission_date"]').val(),
admission_stage : $('[name="admission_stage"]').val(),
current_stage : $('[name="current_stage"]').val(),
current_section : $('[name="current_section"]').val(),
name_of_guardian : $('[name="name_of_guardian"]').val(),
relationship_to_student : $('[name="relationship_to_student"]').val(),
occupation : $('[name="occupation"]').val(),
phone_no : $('[name="phone_no"]').val(),
};
var form_data = new FormData();
for ( var key in formObj ) {
form_data.append(key, formObj[key]);
}
$.ajax({
method: "PUT",
url: apiUrl,
data: form_data,
processData : false,
contentType : false,
cache: false,
success: function(res){
response = JSON.stringify(res);
if(response.status == 201) {
// show success alert
}
//location.href="/admin/allstudents";
},
error: function(err){
console.log(err);
}
});
});
这是我的 php 脚本,用于检索通过 put 方法发送的数据;省略了 class 部分。
public function update($studentUuid = null)
{
$studentModel = new StudentModel();
$studentData = $studentModel->where('uuid', $studentUuid)->first();
$input = $this->request->getRawInput();
return print_r($input);
}
print_r 的结果给我这个我不知道如何处理数据的文本::
Array ( [------WebKitFormBoundaryQFcTXWiBZMLhD6ea Content-Disposition:_form-data;_name] => "firstname" Phinehas ------WebKitFormBoundaryQFcTXWiBZMLhD6ea Content-Disposition: form-data; name="middlename " Toast ------WebKitFormBoundaryQFcTXWiBZMLhD6ea Content-Disposition: form-data; name="lastname" Mord ------WebKitFormBoundaryQFcTXWiBZMLhD6ea Content-Disposition: form-data; name="gender" 女 ------ WebKitFormBoundaryQFcTXWiBZMLhD6ea Content-Disposition: form-data; name="dob" 1989 年 11 月 11 日星期六 ------WebKitFormBoundaryQFcTXWiBZMLhD6ea Content-Disposition: form-data; name="admission_date" 2001 年 5 月 10 日星期四 -- ----WebKitFormBoundaryQFcTXWiBZMLhD6ea 内容配置:表单数据;名称="admission_stage" class 6 ------WebKitFormBoundaryQFcTXWiBZMLhD6ea 内容配置:表单数据;名称="current_stage" form 3 ------WebKitFormBoundaryQFcTXWiBZMLhD6ea Content-Disposition: form-data; name="current_section" 黄色 ------WebKitFormBoundaryQFcTXWiBZMLhD6ea Content-Disposition: form-data; name="name_of_guardian" 博士 [=2 4=] Sapaa ------WebKitFormBoundaryQFcTXWiBZMLhD6ea Content-Disposition: form-data; name="relationship_to_student" 父亲 ------WebKitFormBoundaryQFcTXWiBZMLhD6ea Content-Disposition: form-data; name="occupation" Manager ------WebKitFormBoundaryQFcTXWiBZMLhD6ea Content-Disposition: form-data; name="phone_no" xxx-xxx-xxxx ------WebKitFormBoundaryQFcTXWiBZMLhD6ea-- )
获取 formDAta() 使用
$this->request->getPost('item');
适用于 json 或 formData 请求正文
$raw=(array)$this->request->getVar()
为了测试使用 postman 所以下载它
second if json request set request postman to put
但如果 formDAta 请求设置请求 post 则添加此字段 形成数据值
var form_data = new FormData();
//this works for you
form_data.append('_method', 'PUT');
https://codeigniter.com/user_guide/incoming/methodspoofing.html
for ( var key in formObj ) {
form_data.append(key, formObj[key]);
}
form_data.append('_method', 'PUT');
$.ajax({
method: "POST",
url: apiUrl,
data: form_data,
processData : false,
contentType : false,
cache: false,
success: function(res){
response = JSON.stringify(res);
if(response.status == 201) {
// show success alert
}
//location.href="/admin/allstudents";
},
error: function(err){
console.log(err);
}
});
我想通了,不知道它是否适用于每种情况,但它对我有用...我创建了一个帮助程序文件(以隐藏丑陋之处),它将值提取到常规关联数组中:
put_helper.php:
function getPut($raw_input)
{
$input_string = $raw_input[array_keys($raw_input)[0]];
preg_match('#\{(.*?)\}#', $input_string, $match);
$json_string = '{' . $match[1] . '}';
$data = (array) json_decode($json_string);
return $data;
}`
在我的控制器中:
public function update($id = null)
{
helper('put_helper');
$data = getPut((array) $this->request->getRawInput());
`
我在网上找不到任何其他解决方案...
希望它能帮到别人 ;)