Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.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 通过ajax和php上传图像作为附件_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript 通过ajax和php上传图像作为附件

Javascript 通过ajax和php上传图像作为附件,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,所以我有一个工作HTML表单,将输入的内容发送到电子邮件。这是使用jquery通过ajax将表单数据提交到php文件以发送电子邮件。这很好,没问题。现在,我想将max 4文档文件上传添加到表单中,并将其与表单数据一起作为附件发送。所以我相信我理解HTML代码形式,我也相信我理解如何使用js检查位和大部分php端。那么,我在这里要问的问题是什么呢?我就是不能理解ajax数据:字符串 $.ajax({ type: "POST", url: "assets/php

所以我有一个工作HTML表单,将输入的内容发送到电子邮件。这是使用jquery通过ajax将表单数据提交到php文件以发送电子邮件。这很好,没问题。现在,我想将max 4文档文件上传添加到表单中,并将其与表单数据一起作为附件发送。所以我相信我理解HTML代码形式,我也相信我理解如何使用js检查位和大部分php端。那么,我在这里要问的问题是什么呢?我就是不能理解ajax数据:字符串

$.ajax({
  type: "POST",
  url: "assets/php/quick_form.php",
  data:
    "name=" +
    name +
    "&reg=" +
    reg +
    "&phone=" +
    phone +
    "&vehicleType=" +
    vehicleType +
    "&postCode=" +
    postCode +
    "&message=" +
    message +
    "&phoneCon=" +
    phoneCon +
    "&textCon=" +
    textCon +
    "&whatsApp=" +
    whatsApp,
  success: function (text) {
    if (text == "success") {
      formSuccess();
    } else {
      formError();
      submitMSG(false, text);
    }
  },
});
我看到的每一个帮助或示例都将数据设置为formData变量,我只是不确定我需要如何使用jsvar从我的表单中以这种格式传递文件数据,以便a可以在php中处理它

如果有人能给我举个例子说明如何做到这一点,我将不胜感激。我花了一整晚的时间来做这件事,但我似乎无法集中注意力


提前感谢jquery ajax方法中的任何帮助

如果数据属性接受对象、字符串或数组,则可以将所有表单条目收集为formData

const formData = new FormData(form);
然后将formData转换为对象

const data = Object.fromEntries(formData)
在ajax方法中使用它

const form = document.form.formID

// collect form data
const formData = new FormData(form);

// tranform formData to an object
const data = Object.fromEntries(formData);

$.ajax({
  type: "POST",
  url: "assets/php/quick_form.php",
  data: data,
  success: function (text) {
    if (text == "success") {
      formSuccess();
    } else {
      formError();
      submitMSG(false, text);
    }
  },
});
更新0

由于
Object.fromEntries()
自firefox 63、chrome 73即最新版本的浏览器以来一直支持,因此您可以使用以下逻辑获取数组对象,而无需
Object.fromEntries

const formData=new formData();
格式数据。附加(“名称”、“ada”);
formData.append(“电子邮件”ada@example.com");
const data=Array.from(formData)
.map([name,value])=>({
名称
价值
}))
.减少((以前的值,当前值)=>{
常量[名称,值]=对象值(currentValue);
previousValue[名称]=值;
返回以前的值;
}, {});

控制台日志(数据)在jquery ajax方法中,如果数据属性接受对象、字符串或数组,则可以将所有表单条目收集为formData

const formData = new FormData(form);
然后将formData转换为对象

const data = Object.fromEntries(formData)
在ajax方法中使用它

const form = document.form.formID

// collect form data
const formData = new FormData(form);

// tranform formData to an object
const data = Object.fromEntries(formData);

$.ajax({
  type: "POST",
  url: "assets/php/quick_form.php",
  data: data,
  success: function (text) {
    if (text == "success") {
      formSuccess();
    } else {
      formError();
      submitMSG(false, text);
    }
  },
});
更新0

由于
Object.fromEntries()
自firefox 63、chrome 73即最新版本的浏览器以来一直支持,因此您可以使用以下逻辑获取数组对象,而无需
Object.fromEntries

const formData=new formData();
格式数据。附加(“名称”、“ada”);
formData.append(“电子邮件”ada@example.com");
const data=Array.from(formData)
.map([name,value])=>({
名称
价值
}))
.减少((以前的值,当前值)=>{
常量[名称,值]=对象值(currentValue);
previousValue[名称]=值;
返回以前的值;
}, {});

控制台日志(数据)谢谢我会尝试一下并给出反馈结果谢谢我会尝试一下并给出反馈结果