如何处理来自“$this->request->getRawInput()”的数据CodeIgniter 4

mm9b1k5b  于 2022-12-07  发布在  其他
关注(0)|答案(3)|浏览(149)

这是我 AJAX 方法,它从html表创建表单数据,
$('#updateStudentInfoBtn').单击(函数(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方法发送的数据;省略了类部分。

public function update($studentUuid = null)
{
    $studentModel = new StudentModel();
    $studentData = $studentModel->where('uuid',  $studentUuid)->first();

    $input = $this->request->getRawInput();
    return print_r($input);
}

print_r的结果给予我这个文本我不知道如何处理数据::
在此基础上,提出了一种新的基于Web的数据库管理系统的设计方法。_姓名] =〉“名字”Phinehas -------网络工具包表格边界QFcTXWiBZMLhD 6 ea内容-处置:内容部署:表单数据;名称=“lastname”修改-------WebKit表单边界QFcTXWiBZMLhD 6 ea内容处理:表格-数据;名称=“性别”女性------网络工具包表格边界QFcTXWiBZMLhD 6 ea内容-处置:1989年11月11日(星期六)------WebKit表单边界QFcTXWiBZMLhD 6 ea内容处理:2001年5月10日(星期四)------WebKit表格边界QFcTXWiBZMLhD 6 ea内容-处置:第6类------网络工具包表格边界QFcTXWiBZMLhD 6 ea内容处置:表单数据;名称=“当前阶段”表单3 -------网络工具包表单边界QFcTXWiBZMLhD 6 ea内容-处置:表单数据;名称=“当前部分”黄色-------网络工具包表单边界QFcTXWiBZMLhD 6 ea内容处理:表格数据;名称=“监护人名称”DR S.K Sapaa -------网络工具包表格边界QFcTXWiBZMLhD 6 ea内容处置:表格数据;名称=“与学生的关系”父亲-------WebKit表格边界QFcTXWiBZMLhD 6 ea内容-处置:表单数据; name=“occupation”管理器------WebKit表单边界QFcTXWiBZMLhD 6 ea内容处理:表格数据;名称=“电话号码”xxx-xxx-xxxx -------网络工具包表格边界QFcTXWiBZMLhD 6 ea--)

z4iuyo4d

z4iuyo4d1#

要获取formData(),请使用

$this->request->getPost('item');

用于json或formData请求主体

$raw=(array)$this->request->getVar()
vecaoik1

vecaoik12#

我想出来了,不知道它是否是每个情况下的正确解决方案,但它对我很有效...我创建了一个帮助文件(以隐藏丑陋),它将值提取到一个常规的关联数组中:
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());

`
我在网上找不到其他的解决方案...
希望它能帮助别人;)

wd2eg0qa

wd2eg0qa3#

测试使用 Postman ,所以下载它
第二,如果json请求设置请求 Postman 放
但如果formData请求设置请求发布,则将此字段添加到表单数据值

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);
    }
});

相关问题