为了账号安全,请及时绑定邮箱和手机立即绑定

发送后处理程序未检索表单数据

发送后处理程序未检索表单数据

PHP
一只名叫tom的猫 2023-10-21 15:59:04
我正在尝试通过 ajax 将图像发送到 ajax 处理程序。ìmage如果我console.log我发送的变量,它看起来很好。截至目前,我正在将其发送给处理程序并尝试将其回显。但我得到的答复是空白的。我正在向image: formData内部发送一个我希望没问题的对象。阿贾克斯:var form_data = new FormData();              var image = $('#newImage').prop('files')[0];              var image_name = image.name;              var image_extension = image.name.split('.').pop().toLowerCase();              if(jQuery.inArray(image_extension, ['gif', 'jpg', 'JPG', 'pjpeg', 'x-png', 'png', 'PNG', 'jpeg']) == -1) {                alert("Invalid Image File Type")              }              var image_size = image.size;              if(image_size > 700000) {                alert("Image too big!");              } else {                form_data.append('file', image);              }              let data = {                action: 'NewEventExhibition',                name: name,                description: description,                notes: notes,                status: status,                slug: slug,                start_date: start_date,                end_date: end_date,                event_code: '<?=$code?>',                image: form_data              };              $.ajax({                url: '/modules/ajax/ajax_handler.php',                type: 'POST',                data: data,                contentType: false,                cache: false,                processData: false,                mimeType: 'multipart/form-data',                success: function(response) {                  alert(response);                },                fail: function(response) {                  console.log(response);                }              })            }          });处理程序if($_FILES['file']['name'] != '') {          $test = explode(".", $_FILES['file']['name']);          $extension = end($test);          $name = rand(100, 999).'.'.$extension;          $location = "/assets/images/".$name."";          move_uploaded_file($_FILES['file']['tmp_name'], $location);          echo $location;        }```
查看完整描述

1 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

这不是使用 ajax 发送 FormData 对象的方式。该form_data对象应该是您发送的内容,而不是更大对象的一部分。我建议您将对象的所有字段附加data到form_data并发送。


像下面这样:


form_data.append('action', 'NewEventExhibition');

form_data.append('name', name);

form_data.append('description', description);

form_data.append('notes', notes);

form_data.append('status', status);

form_data.append('slug', slug);

form_data.append('start_date', start_date);

form_data.append('end_date', end_date);

form_data.append('event_code', '<?=$code?>');

而不是let data = { .... }.


然后你可以发送它


$.ajax({

  url: '/modules/ajax/ajax_handler.php',

  type: 'POST',

  data: form_data,

  contentType: false,

  cache: false,

  processData: false,

  mimeType: 'multipart/form-data',

  success: function(response) {

    alert(response);

  },

  fail: function(response) {

    console.log(response);

  }

});

请注意data: form_data.


查看完整回答
反对 回复 2023-10-21
  • 1 回答
  • 0 关注
  • 55 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信