5

如何通过 $.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>
4

3 回答 3

2

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

小提琴

$(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;
    });
});
于 2013-11-09T02:44:40.827 回答
0

尝试定义一个新的变量

var name = "hello";

然后将其插入$.ajax data

    $.ajax({
        url: 'post.php',
        type: 'POST',
        data: "form_data="+form_data+"&name="+name,
        success: function (data) {

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

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

我从来没有测试过这个脚本,但没关系检查一下:D

于 2013-11-09T02:31:13.763 回答
0

当你在 PHP 中取回它时,我会 JSON.stringify 然后 json_decode

var data = JSON.stringify({ /* object */ });

然后在你的 php $data = json_decode(....);

于 2013-11-09T02:08:34.270 回答