首页 > 解决方案 > 如何在 onchange 事件中使用 php、ajax 上传图片

问题描述

我正在使用 jquery ajax 和 php 在 onchange 事件上上传图像,代码可以正常工作,但是它没有上传图像,在其他页面上显示未定义的索引照片

索引.php

<form id="reg" method="POST" enctype="multipart/form-data">
  <div class="form-group">
    <input type="file" name="photo" id="photo" onchange="myfunction(this.form);" >
    <span id="photoid"></span>
  </div>
</form>

<script>
  function myfunction(theForm) {
    var formData = new FormData(this);

    $.ajax({      
      type: 'POST',
      url: 'regimg.php',
      data: formData, 
      success: function (data) { 
        $('#photoid').html(data); 
      },
      cache: false,
      contentType: false,
      processData: false
    })
  }
</script>

配置文件

<?php 
  include 'db.php';
  if ($_SERVER['REQUEST_METHOD'] == 'POST')
  {
    $photo = $_FILES['photo']['name'];
    $query = mysqli_query($conn,"INSERT INTO img(image) VALUES('$photo')");
    if ($query AND move_uploaded_file($_FILES['photo']['tmp_name'], 'image/'.$photo))
    {
      echo 'Data has been added';
    }
    else
    {
      echo 'data could not be added';
    }
  }
?>

当我单击文件时,显示一个错误,未定义的索引照片。请帮我解决这个问题

标签: javascriptphpjquery

解决方案


this在你的函数中是window,而不是form元素。将 FormData 行更改为:

var formData = new FormData(theForm);

推荐阅读