javascript - 如何通过ajax请求将字符串和文件一起发送到php文件?

标签 javascript php jquery ajax

我有一个 php 文件,它将文件保存到服务器上一个名为 upload 的文件夹中,它通过 ajax 请求接收文件,到目前为止一切正常,下一个要求是随文件一起发送一个字符串以指定上传文件夹和子文件夹像“Course/Math”这样的文件夹如何实现?

JS

$( document ).ready(function() {
$('#Upload').click(function(){
    var formData = new FormData($('form')[0]);
    $.ajax({
        url: 'uploadFile.php',  
        type: 'POST',
        xhr: function() {  
            var myXhr = $.ajaxSettings.xhr();
            if(myXhr.upload){ 
                myXhr.upload.addEventListener('progress',progressHandling, false);
            }
            return myXhr;
        },
        success: completeHandler,
        data: formData,
        cache: false,
        contentType: false,
        processData: false
    });
});

var progressHandling = function(e){
    if(e.lengthComputable){
        var percent = Math.round((e.loaded / e.total) * 100);
        $('#uploadprogress').css('width', percent+'%');
    }
}

var completeHandler = function(data){
    $('#message').text(data);
    $('#uploadprogress').css('width', '0%');
    $('#file').val('');
};
});     

PHP

<?php
if ($_FILES["file"]["error"] > 0) {

} else {
  move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
  echo true;
}
?>

最佳答案

使用在ajax调用中发送表单数据的示例.serialize()

var formData = $('#myform').serialize;
    $.ajax({
        url: 'uploadFile.php',  
        type: 'POST',
        xhr: function() {  
            var myXhr = $.ajaxSettings.xhr();
            if(myXhr.upload){ 
                myXhr.upload.addEventListener('progress',progressHandling, false);
            }
            return myXhr;
        },
        success: completeHandler,
        data: formData,
        cache: false,
        contentType: false,
        processData: false
    });

如果你想添加一个字符串,只需使用如下:

var value = 'test';
var formData = $('#myform').serialize+"&newstring="+value;

更新

通过ajax无法上传文件。 您可以使用 IFrame 上传文件,无需刷新页面或AjaxFileUpload插件。

更多详细信息请参见 Answer .

还可以在此处提供一些详细说明:

关于javascript - 如何通过ajax请求将字符串和文件一起发送到php文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23535768/

相关文章:

c# - 在 asp.net 回发期间禁用和启用按钮

javascript - 如何在 jQuery 函数 text() 中添加新行

php - 在 Windows 中为 MySQL 配置 ODBC

PHP 套接字流 gzip 数据

javascript - 使用滚动打开和关闭 div 并在到达特定部分时淡入淡出

javascript - 如何使用 onload 在删除关键字 "script"的搜索框中运行 javascript

javascript - 如果存在特定类,则不添加类

PHP 站点在 XAMPP 中运行良好,但在 Linux 上重定向次数过多

javascript - 如何使用 PHP CodeIgniter、JQuery、AJAX 检查数据库中是否已存在 ID 验证

javascript - 显示来自输入类型文件的文件名 - console.log(fileName) 返回 null