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 文字列を追加し、それを「object」という名前に追加します。PHP で JSON にアクセスすると、JSON がjson_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

JSON.stringifyしてから、PHPに戻ったらjson_decodeします

var data = JSON.stringify({ /* オブジェクト */ });

次に、php $data = json_decode(....); で

于 2013-11-09T02:08:34.270 に答える