Javascript 2 Jquery ajax post请求。第二个给出错误:error[ERR\u HTTP\u HEADERS\u SENT]:发送到客户端后无法设置头

Javascript 2 Jquery ajax post请求。第二个给出错误:error[ERR\u HTTP\u HEADERS\u SENT]:发送到客户端后无法设置头,javascript,jquery,node.js,ipfs,js-ipfs,Javascript,Jquery,Node.js,Ipfs,Js Ipfs,我首先有一个GET请求来检索数据结构。然后我执行一些更改并执行一个PUT请求,将数据结构发送到服务器并更新记录。当我在第一个表单上单击上的submit按钮时,它会按预期工作;当我提交第二个表单时,它会按预期执行,但它会记录2个错误。此外,当我连续进行2次编辑时,它会使应用程序崩溃,并给出一个RangeError:Maximum call stack size Oversed错误。与RangeError:Maximum call stack size Exchanged错误相关的代码位于底部

我首先有一个
GET
请求来检索数据结构。然后我执行一些更改并执行一个
PUT
请求,将数据结构发送到服务器并更新记录。当我在第一个表单上单击上的submit按钮时,它会按预期工作;当我提交第二个表单时,它会按预期执行,但它会记录2个错误。此外,当我连续进行2次编辑时,它会使应用程序崩溃,并给出一个
RangeError:Maximum call stack size Oversed
错误。与
RangeError:Maximum call stack size Exchanged
错误相关的代码位于底部

以下是我的客户端脚本:

<script>

const capitalize = ([first, ...rest]) => 
${first.toUpperCase()}${rest.join('')};
let patientDataRetrieved = false;
let _xhr,_xhr2 = null;

let patientID ;
let first_name;
let last_name;
let email;
let sex;
let date_of_birth;
let patient_phone;
let marital_status;
let emergency_contact1_rel ;
let emergency_contact1_phone;
let emergency_contact2_rel ;
let emergency_contact2_phone;
let spouse_phone;

$("body").on("contextmenu",function(e){
    return false;
});
$('body').bind('cut copy ', function (e) {
    e.preventDefault();
});



document
    .getElementById("search")
    .addEventListener("submit",ev => {
        ev.preventDefault();
        patientID = ev.target.patientID.value;
        let uid = patientID;
        getPatientDetails()
        function getPatientDetails(){
            if(_xhr2!= null)
                _xhr2.abort();
            if(patientDataRetrieved===false){
                $(document).ready(()=>{
                    _xhr = $.ajax({
                        url: '/profile/'+uid,
                        type: 'GET',
                        cache: false,
                        success: function(data){
                            //Instantiate Variables of User Data
                            let userdata = data;
                            console.log(userdata);
                            first_name = userdata.first_name;
                            last_name  = userdata.last_name;
                            sex = userdata.sex;
                            email = userdata.email;
                            let blood_type = userdata.blood_type;
                            date_of_birth = userdata.date_of_birth;
                            spouse_phone = userdata.spouse_phone;
                            patient_phone = userdata.patient_phone;
                            marital_status =userdata.marital_status;
                            spouse_phone = userdata.spouse_phone;
                            emergency_contact1_rel = userdata.emergency.contact1.relationship;
                            emergency_contact1_phone = userdata.emergency.contact1.phone;
                            emergency_contact2_rel = userdata.emergency.contact2.relationship;
                            emergency_contact2_phone = userdata.emergency.contact2.phone;

                            let chronic_illnesses = userdata.chronic_illnesses;
                            let past_surgeries = userdata.past_surgeries;
                            let allergies = userdata.allergies;
                            let long_term_medication = userdata.long_term_medication;

                            //Append User Data to respective td in table
                            $(".firstname").append(capitalize(first_name));
                            $(".lastname").append(capitalize(last_name));
                            $("#blood_type").val(blood_type);
                            $(".sex").append(capitalize(sex));
                            $(".date_of_birth").append(date_of_birth);
                            $(".patient_phone").append(patient_phone);
                            $(".marital_status").append(capitalize(marital_status));
                            $(".spouse_phone").append(spouse_phone);

                            $(".emergency_contact1_rel").append(capitalize(emergency_contact1_rel));
                            $(".emergency_contact1_rel").append(", Phone: "+emergency_contact1_phone);
                            $(".emergency_contact2_rel").append(capitalize(emergency_contact2_rel));
                            $(".emergency_contact2_rel").append(", Phone: "+emergency_contact2_phone);
                            $("#chronic_illnesses").val(chronic_illnesses);
                            $("#past_surgeries").val(past_surgeries);
                            $("#allergies").val(allergies);
                            $("#long_term_medication").val(long_term_medication);
                            document.getElementById("patientData").style.display ="block";
                            patientDataRetrieved = true;
                            return true;


                        }
                        , error: function(jqXHR, textStatus, err){
                            alert('text status '+textStatus+', err 
'+err)
                        }

                    });

                });
            }
        }


    });

document.getElementById("editForm").addEventListener("submit", ev =>{
        ev.preventDefault();
    updatePatientInfo()
        function updatePatientInfo() {
        if(_xhr!=null){_xhr.abort()}
            let formData = {
                first_name: first_name,
                last_name: last_name,
                email: email,
                blood_type: $("#blood_type").val(),
                sex: sex,
                date_of_birth:date_of_birth,
                patient_phone:patient_phone,
                marital_status:marital_status,
                spouse_phone: spouse_phone,
                emergency_contact1_relationship:emergency_contact1_rel,
                emergency_contact1_phone:emergency_contact1_phone,
                emergency_contact2_relationship:emergency_contact2_rel,
                emergency_contact2_phone: emergency_contact2_phone,
                chronic_illnesses: $("#chronic_illnesses").val(),
                past_surgeries: $("#past_surgeries").val(),
                allergies: $("#allergies").val(),
                long_term_medication: $("#long_term_medication").val(),
                uid: patientID,
            };


            _xhr2 = $.ajax({
                url: "/edit_record_process",
                type: "PUT",
                data: formData,
                datatype:"text",
                encoded:true,
                cache: false,
                success:function(data){
                    if(data){
                        window.location.reload()
                    }
                },
                error: (err)=>{
                    alert(err);
                }
            });
        }
});
IPFS API代码:

const sendFileToNet = async (file_data) => {
const cid = function (data) {
    return client.add(data).then(cid =>{return cid;}).catch(err=>{
        console.log(err)})
}
const real_cid = await cid(file_data);
return real_cid;
 }

const getFileFromNet = async (cid) =>{
const stream = client.cat(cid)
let data = ''
for await (const chunk of stream) {
    // chunks of data are returned as a Buffer, convert it back to a 
string
    data += chunk.toString()
}
return data;
 }

您的第二个ajax不依赖于成功数据的结果。在jQuery文档中,它表示“如果请求成功,将调用一个函数。” 这意味着您已成功发送请求。你不是在操纵成功的结果。 你需要像这样的东西

success:function(data){
 if(data.result){
     location.reload();
 }
}

第138行server.js中的服务器端似乎出现了错误。因此,回答您的问题需要该代码。
res.send(return\u data)是引用的内容。你认为这两个响应会互相阻塞吗?就像我说的,请提供服务器代码。我添加了服务器端代码。/profile响应第一个请求,/edit_用户响应第二个请求。哪一行是第138行?我试过了,但没用。
success:function(data){
 if(data.result){
     location.reload();
 }
}