Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $\u使用formData通过ajax发布时,POST将保持空_Javascript_Php_Html_Ajax - Fatal编程技术网

Javascript $\u使用formData通过ajax发布时,POST将保持空

Javascript $\u使用formData通过ajax发布时,POST将保持空,javascript,php,html,ajax,Javascript,Php,Html,Ajax,表格如下: <form id="complaintForm" enctype="multipart/form-data" method="POST"> <input type="number" id="isComplaintForm" value="1" hidden> <label for="fname">

表格如下:

<form id="complaintForm" enctype="multipart/form-data" method="POST">
    <input type="number" id="isComplaintForm" value="1" hidden>
    <label for="fname">Full Name</label><br />
    <input type="text" id="fname" name="fname"><br />
    <label for="DOB">Date of Birth</label><br />
    <input type="date" id="DOB" name="DOB"><br /><br />
    <label for="identification">Valid ID card or passport No.</label><br />
    <input type="number" id="identification" name="identification"><br /><br />
    <label for="address">Full address of permanent place of residence</label><br />
    <input type="text" id="address" name="address"><br /><br />
    <label for="email">Email address and method of reply.</label><br />
    <input type="email" id="email" name="email"><br /><br />
    <label for="shortdesc">Short description of incident.</label><br/>
    <input type="text" id="shortdesc" name="shortdesc"><br/><br/>
    <label for="incident">Description of Incident.</label><br />
    <textarea id="incident" name="incident"  rows="6" cols="50"></textarea><br /><br />
    <label for="uploaded_file">Select A File To Upload:</label><br />
    <input type="file" id="uploadedFile" name="uploadedFile"><br /><br />    
    <input type="submit" value="Submit" id="complaintSubmit">
</form>
var_dumps基本上不输出任何内容,以下是php文件的注意事项:

Notice: Undefined index: fd
Notice: Undefined index: brand 
Notice: Undefined index: lang
Notice: Undefined index: lang
Notice: Undefined index: fd
Vardumps
Array
Notice: Undefined index: fd
NULL
Notice: Undefined index: formData
NULL
Arrayarray(0) { }
Array ( ) Post is setarray(0) { } array(0) { }
最后一个作用域是能够使用$\u文件发送带有附件的电子邮件,并使用$\u POST发送文本数据。但首先我需要弄清楚为什么$u POST不包含fd或formData。 PS:我不确定var fd是否=JSON.stringify(对象);在这种情况下是否有必要

任何帮助都将不胜感激,因为我已经被困在这个问题上一段时间了


此外,“请求有效负载”正在返回[object object]

FormData对象必须是
数据:
选项的值,不能嵌套在另一个对象中

submitHandler: function(form) {
    // removes default submit events and establishes AJAX call
    event.preventDefault();
    var brand = faqApp.vars.brand;
    // show loading bars
    $("#callmeback_confirmation").css(cmbEnableCSS).html('<div class="sp sp-circle"></div>').show();
    //var form = ($("#complaintForm")[0]);
    var form = document.getElementById("complaintForm");
    var formMessages = $('#callmeback_confirmation');

    //Getting Files Collection
    var file = $("#uploadedFile")[0].files;

    var formData = new FormData();
    formData.append("mail_id", $('#identification').val());
    formData.append("mail_name", $('#fname').val());
    formData.append("mail_address", $('#address').val());
    formData.append("mail_dob", $('#DOB').val());
    formData.append("cmb_email", $('#email').val());
    formData.append("mail_subject", $('#shortdesc').val());
    formData.append("mail_message", $('#incident').val());
    formData.append("isComplaintForm", $('#isComplaintForm').val());
    formData.append("attachment", $("input[type=file]")[0].files[0]);
    formData.append("brand", faqApp.vars.brand);
    formData.append("lang", faqApp.vars.language);

    $.ajax({
        type: 'POST',
        timeout: 15000,
        url: faqApp.vars.host + '/cmb.php',
        global: false,
        //dataType: 'json'
        // brand and lang are defined within the code, I had no issue with them before I started working on including an attachment within the complaint form
        data: formData,
        processData: false, // tell jQuery not to process the data
        contentType: false,
        cache: false
    });
}
submitHandler:函数(表单){
//删除默认提交事件并建立AJAX调用
event.preventDefault();
var brand=faqApp.vars.brand;
//显示加载条
$(“#callmeback_confirmation”).css(cmbEnableCSS.html(“”).show();
//变量形式=($(“#投诉形式”)[0]);
var form=document.getElementById(“投诉表单”);
var formMessages=$('callmeback_confirmation');
//获取文件集合
var file=$(“#uploadedFile”)[0]。文件;
var formData=new formData();
append(“mail_id”,“$('#identification').val());
append(“mail_name”,$('#fname').val());
append(“mail_address”,$(“#address”).val();
append(“mail_dob”,$('#dob').val());
formData.append(“cmb#u email”,$(“#email”).val();
append(“mail_subject”,$('#shortdesc').val());
append(“mail_message”,$('#incident').val());
append(“isComplaintForm”,$('#isComplaintForm').val());
formData.append(“附件”、$(“输入[type=file]”[0]。文件[0]);
formData.append(“品牌”,faqApp.vars.brand);
formData.append(“lang”,faqApp.vars.language);
$.ajax({
键入:“POST”,
超时:15000,
url:faqApp.vars.host+'/cmb.php',
全球:错,
//数据类型:“json”
//brand和lang是在代码中定义的,在我开始在投诉表中添加附件之前,我对它们没有异议
数据:formData,
processData:false,//告诉jQuery不要处理数据
contentType:false,
缓存:false
});
}

然后在PHP中,您可以使用
$\u POST['mail\u id']
$\u POST['brand']
$\u文件['attachment']

访问参数
FormData
对象必须是
数据:
选项的值,它不能嵌套在另一个对象中

submitHandler: function(form) {
    // removes default submit events and establishes AJAX call
    event.preventDefault();
    var brand = faqApp.vars.brand;
    // show loading bars
    $("#callmeback_confirmation").css(cmbEnableCSS).html('<div class="sp sp-circle"></div>').show();
    //var form = ($("#complaintForm")[0]);
    var form = document.getElementById("complaintForm");
    var formMessages = $('#callmeback_confirmation');

    //Getting Files Collection
    var file = $("#uploadedFile")[0].files;

    var formData = new FormData();
    formData.append("mail_id", $('#identification').val());
    formData.append("mail_name", $('#fname').val());
    formData.append("mail_address", $('#address').val());
    formData.append("mail_dob", $('#DOB').val());
    formData.append("cmb_email", $('#email').val());
    formData.append("mail_subject", $('#shortdesc').val());
    formData.append("mail_message", $('#incident').val());
    formData.append("isComplaintForm", $('#isComplaintForm').val());
    formData.append("attachment", $("input[type=file]")[0].files[0]);
    formData.append("brand", faqApp.vars.brand);
    formData.append("lang", faqApp.vars.language);

    $.ajax({
        type: 'POST',
        timeout: 15000,
        url: faqApp.vars.host + '/cmb.php',
        global: false,
        //dataType: 'json'
        // brand and lang are defined within the code, I had no issue with them before I started working on including an attachment within the complaint form
        data: formData,
        processData: false, // tell jQuery not to process the data
        contentType: false,
        cache: false
    });
}
submitHandler:函数(表单){
//删除默认提交事件并建立AJAX调用
event.preventDefault();
var brand=faqApp.vars.brand;
//显示加载条
$(“#callmeback_confirmation”).css(cmbEnableCSS.html(“”).show();
//变量形式=($(“#投诉形式”)[0]);
var form=document.getElementById(“投诉表单”);
var formMessages=$('callmeback_confirmation');
//获取文件集合
var file=$(“#uploadedFile”)[0]。文件;
var formData=new formData();
append(“mail_id”,“$('#identification').val());
append(“mail_name”,$('#fname').val());
append(“mail_address”,$(“#address”).val();
append(“mail_dob”,$('#dob').val());
formData.append(“cmb#u email”,$(“#email”).val();
append(“mail_subject”,$('#shortdesc').val());
append(“mail_message”,$('#incident').val());
append(“isComplaintForm”,$('#isComplaintForm').val());
formData.append(“附件”、$(“输入[type=file]”[0]。文件[0]);
formData.append(“品牌”,faqApp.vars.brand);
formData.append(“lang”,faqApp.vars.language);
$.ajax({
键入:“POST”,
超时:15000,
url:faqApp.vars.host+'/cmb.php',
全球:错,
//数据类型:“json”
//brand和lang是在代码中定义的,在我开始在投诉表中添加附件之前,我对它们没有异议
数据:formData,
processData:false,//告诉jQuery不要处理数据
contentType:false,
缓存:false
});
}

然后,在PHP中,您可以使用
$\u POST['mail\u id']
$\u POST['brand']
、和
$\u文件['attachment']

访问参数。您分配给
FormData
对象的字段名和PHP中的预期字段似乎不同。您不能在常规对象中嵌套
FormData
。如果
data:
是常规对象,则不能使用
processData:false
您需要将所有参数放入
FormData
对象中,然后使用
data:FormData
@Barmar Im using processData:false,因为我发现上传文件时需要这样做。在我以前没有文件上传的实现中,我没有processData,contentType:false,我在javascript中使用了var FormData={mail_id:$('#identification').val()}而不是使用FormData对象,它工作得很好。你必须使用
FormData
对象上传文件。因此,您需要将所有参数放在该对象中,而不是将其嵌套在普通对象中。您分配给
FormData
对象的字段名与PHP中的预期字段似乎不同。您不能将
FormData
嵌套在常规对象中。如果
data:
是常规对象,则不能使用
processData:false
您需要将所有参数放入
FormData
对象中,然后使用
data:FormData
@Barmar Im using processData:false,因为我发现上传文件时需要这样做。在我以前没有文件上传的实现中,我没有processData,contentType:false,并且在javascript中使用了var FormData={mail_id:$('#identification').val()}而不是使用FormData对象
Notice: Undefined index: fd
Notice: Undefined index: brand 
Notice: Undefined index: lang
Notice: Undefined index: lang
Notice: Undefined index: fd
Vardumps
Array
Notice: Undefined index: fd
NULL
Notice: Undefined index: formData
NULL
Arrayarray(0) { }
Array ( ) Post is setarray(0) { } array(0) { }
submitHandler: function(form) {
    // removes default submit events and establishes AJAX call
    event.preventDefault();
    var brand = faqApp.vars.brand;
    // show loading bars
    $("#callmeback_confirmation").css(cmbEnableCSS).html('<div class="sp sp-circle"></div>').show();
    //var form = ($("#complaintForm")[0]);
    var form = document.getElementById("complaintForm");
    var formMessages = $('#callmeback_confirmation');

    //Getting Files Collection
    var file = $("#uploadedFile")[0].files;

    var formData = new FormData();
    formData.append("mail_id", $('#identification').val());
    formData.append("mail_name", $('#fname').val());
    formData.append("mail_address", $('#address').val());
    formData.append("mail_dob", $('#DOB').val());
    formData.append("cmb_email", $('#email').val());
    formData.append("mail_subject", $('#shortdesc').val());
    formData.append("mail_message", $('#incident').val());
    formData.append("isComplaintForm", $('#isComplaintForm').val());
    formData.append("attachment", $("input[type=file]")[0].files[0]);
    formData.append("brand", faqApp.vars.brand);
    formData.append("lang", faqApp.vars.language);

    $.ajax({
        type: 'POST',
        timeout: 15000,
        url: faqApp.vars.host + '/cmb.php',
        global: false,
        //dataType: 'json'
        // brand and lang are defined within the code, I had no issue with them before I started working on including an attachment within the complaint form
        data: formData,
        processData: false, // tell jQuery not to process the data
        contentType: false,
        cache: false
    });
}