php - jQuery + php 文件上传。传递多个参数

标签 php jquery ajax upload

如何通过 $.ajax 将额外的变量传递给 post.php?

我的第一个变量是

var form_data = new FormData($(this)[0])

我可以单独传递,但是如果我想添加另一个变量并制作一个数组

data {
    "form_data": form_data,
    "name": "hello"
}

它不起作用。

我当前的代码:

$(document).ready(function() { 
    $("form#data").submit(function(){

        var form_data = new FormData($(this)[0]);

        $.ajax({
            url: 'post.php',
            type: 'POST',
            data: form_data,
            success: function (data) {

                $('#result').html(data); 

            },
            contentType: false,
            processData: false
        });

        return false;
    });
});

<div id="result"></div>

<form id="data" method="post" enctype="multipart/form-data">
    <input name="file" type="file" />
    <button>Submit</button>
</form>

最佳答案

试试这个。 formData 对象有一个方法 append。我们将改用它。我们将在文件名下追加该文件。在 PHP 中,使用 $_FILES['file'] 访问它。现在为要添加到其中的数组或对象。在其上使用 JSON.stringify 将其转换为字符串。我们附加 JSON 字符串并将其添加到名称“object”。要在 PHP 中访问 JSON,json_decode($_POST['object']) 会将其转换为对象。

fiddle

$(function(){
    $("form#data").submit(function (e) {
        e.preventDefault();
        var form_data = new FormData(),
            o = {};
        o.name = 'Adam';
        o.arr = ['test', 213];
        form_data.append('file', $('input[name="file"]', this)[0].files[0]);
        form_data.append('object', JSON.stringify(o));
        $.ajax({
            url: '/info/',
            type: 'POST',
            data: form_data,
            success: function (data) {

                $('#result').html(data);

            },
            contentType: false,
            processData: false
        });

        return false;
    });
});

关于php - jQuery + php 文件上传。传递多个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19871434/

相关文章:

php - 如何为 Symfony2 中的所有 Controller 添加一些路由前缀?

php - Msql Select and group from db where team_1 和 team_2 相同但在条目中相反

jquery - 将淡入淡出过渡添加到旧的 Unslider 脚本?

php - 在 Zend DB Table Select 中使用 SQL_CALC_FOUND_ROWS 获取总行数

JQuery:如何在浏览器调整大小时更新变量?

javascript - 如何使用 Javascript 设置 HTML 标签的 Enter 键按下

javascript - 跨域AJAX请求

javascript - 在 jQuery 中使用什么代替 innerHTML 来获取值(value)?

php - 无法使用 ajax 将表单数据发布到 Controller 操作 (laravel)

php - 如何通过 Laravel 中数组中的对象保存数据