php - 如何使用$.ajax()上传文件

标签 php javascript ajax

当我尝试使用 $_FILES 获取图像名称时收到此消息。

Notice: Undefined index: image in C:\xampp\htdocs\upload_form\upload_query.php on line 10

我有一个表单,将有关图像的信息上传到 mysql 数据库(phpmyadmin),然后使用 JavaScript 清除该表单,以便用户可以上传另一个图像和信息。 我读过,你不能像 JavaScript 一样使用 $_FILES,但我不确定为什么,我也希望有一个解决方案。

我是 PHP 和 JavaScript 新手。

这是 JavaScript。

$('form').on('submit',function() {
var that= $(this),
    url = that.attr('action'),
    type = that.attr('method'),
    data = {};

    that.find('[name]').each(function(index,value) {
           var that = $(this),
           name = that.attr('name'),
           value = that.val();

           data[name] = value;
    });

 $.ajax({
         url: url,
         type: type, 
         data: data,
         success: function(response){
                  console.log(response);
         }
 });
  document.getElementById("upload_form").reset();
return false;
});

这是 php。

 //image properties
 $name   = $_FILES['image']['name'];
 $size   = $_FILES['image']['size'];
 $temp   = $_FILES['image']['tmp_name'];
 $error  = $_FILES['image']['error'];
 $type   = $_FILES['image']['type'];
 //****************

这是表格的一部分。

<form action='upload_query.php' class='appnitro' enctype='multipart/form-data' id='upload_form' method='post' name='upload_form'>
  <ul>
    <li id='li_1'>
      <label class='description' for='image'>Upload a Picture</label>    
      <div>
        <input class='element file' id='image' name='image' required="" type='file'>
      </div>
    </li>    
    <li id='li_2'><label class='description' for='name'>Name</label> <span><input class='element text' id='first_name' maxlength='255' name='first_name' placeholder='First Name.' required="" size='12' value=''></span> <span><input class='element text' id='last_name' maxlength='255' name='last_name' placeholder='Last Name.' required="" size='18' value=''></span></li>
  </ul>
</form>

等等

最佳答案

<小时/>

是的,您可以使用$.ajax上传文件,具体方法如下

首先让我们有一个带有 id 的典型表单。该表格可以根据您的意愿包含您的一个或多个文件。

<form id='fileupload' method='post' enctype="multipart/form-data" ...

然后在 jQuery 中执行以下操作。

$('#btnupload').click(function () {
    //the key is FormData object
    var formData = new FormData(document.getElementById('fileupload'));
    $.ajax({
        url: 'upload.php', //server script to process data
        type: 'POST',
        success: function (json) {}
        data: formData,
        dataType: "json",
        cache: false,
        contentType: false,
        processData: false
    });
});

这里的关键是使用 javascript FormData对象来构造$.ajax

的数据参数

关于php - 如何使用$.ajax()上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17594068/

相关文章:

php - 初始化 PHP 工具被阻止在 12%

php - 使用 php 和 mysql 每个正确答案的分数

javascript - Phonegap 的本地存储可靠性

javascript - Angular 中一个指令有两个名字

javascript - 又是Safari??表单提交绕过 AJAX

javascript - Rails 4 更新实例变量而无需重新加载页面

javascript - 使用Ajax从数据库中获取数据

javascript - 表单提交后重定向(CSR)

javascript - 如何跟踪实时输入值并提交到服务器?

php - Joomla - 获取文章 ID 数组、检索文本并链接到它们