Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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
Php 将jquery对象追加到formData()中_Php_Jquery_Ajax - Fatal编程技术网

Php 将jquery对象追加到formData()中

Php 将jquery对象追加到formData()中,php,jquery,ajax,Php,Jquery,Ajax,我目前正在为某个网站开发一个后台办公室,在将文件和信息插入数据库时遇到了一些问题。首先,我不能上传相同格式的文件和信息,而不必为每一个其他输入声明一个变量;其次,我不能像往常一样将声明的对象附加到上传文件格式 我已经尝试将as和object追加,但是一些输入得到了未定义的索引 这是我试图将对象附加到formData()的代码: 预期结果应通过json将信息发送到php文件,然后进行处理并插入数据库。尝试以下操作: var info = { 'name': $('#name').val()

我目前正在为某个网站开发一个后台办公室,在将文件和信息插入数据库时遇到了一些问题。首先,我不能上传相同格式的文件和信息,而不必为每一个其他输入声明一个变量;其次,我不能像往常一样将声明的对象附加到上传文件格式

我已经尝试将as和object追加,但是一些输入得到了未定义的索引

这是我试图将对象附加到formData()的代码:

预期结果应通过json将信息发送到php文件,然后进行处理并插入数据库。

尝试以下操作:

var info = {
    'name': $('#name').val(),
    'email': $('#email').val(),
    'country': $('#country').val()
};

var file = $('#file').prop('files')[0];
var new_info = new FormData();
new_info.append("file", file, file.name);
new_info.append("info", JSON.stringify(info));

$.ajax({
type:'POST',
        url:'add-info.php',
        data:new_info,
        dataType:'json',
        processData:false,
        contentType:false,
        encode:true,
 /*....*/
在add-info.php中

if (isset($_POST['info'])) {
    $info = json_decode($_POST['info'], true);
    echo $info["name"];
    echo $info["email"];
    echo $info["country"];
}

或者,您可以使用
Object.entries()
,使您的代码现在变成

$(document).ready(function() {
 $('#addinfo-form').submit(function(e) {
  var file = $('#file').prop('files')[0];
  var info = {
   'name':$('#name').val(),
   'email':$('#email').val(),
   'country':$('#country :selected').val(),
   'file': file
  }
  var new_info = new formData();
  Object.entries(info).forEach(([key, value]) => {
    new_info.append(key, value);
  });
  $.ajax({
   type:'POST',
   url:'add-info.php',
   data:new_info,
   dataType:'json',
   processData:false,
   contentType:false,
   encode:true,
  }
  .done(function(data) {
  })
  .fail(function(data) {
  });
  e.preventDefault();
 });
});

首先获取文件,将其作为属性添加到
info
对象中,并将其解析为
formData

是否尝试了新建信息集('info',info')?而不是附加它?要发送文件,请参阅responseText:“
\n注意:未定义索引:位置在C:\\wamp64\\www\\dfrango\\administrator\\assets\\functions\\gallery\\add-gallery.php的第10行
\n{“success\”:false,\“errors\”:{“name\”:\“Por favor preincha os campos obrigat\\u00f3rios.\”}“似乎您没有发送”位置。”“variable这有点违背了对象的目的,我知道如果我这样定义每个变量,它确实会起作用,这就是为什么我尝试使用object@andrejmonteiro1996这就是你想要的吗?我想是的,它是有效的,让我把它应用到代码的其余部分,谢谢你,欢迎@andrejmonteiro1996!你说的是文件上传吗?很好,我现在可以上传带有信息的文件,添加到数据库中。我使用相同的方法在数据库中插入大查询
$(document).ready(function() {
 $('#addinfo-form').submit(function(e) {
  var file = $('#file').prop('files')[0];
  var info = {
   'name':$('#name').val(),
   'email':$('#email').val(),
   'country':$('#country :selected').val(),
   'file': file
  }
  var new_info = new formData();
  Object.entries(info).forEach(([key, value]) => {
    new_info.append(key, value);
  });
  $.ajax({
   type:'POST',
   url:'add-info.php',
   data:new_info,
   dataType:'json',
   processData:false,
   contentType:false,
   encode:true,
  }
  .done(function(data) {
  })
  .fail(function(data) {
  });
  e.preventDefault();
 });
});