在Ajax中发送文件和数据

时间:2017-03-01 10:40:23

标签: php jquery html ajax laravel

我正在尝试将文件和数据一起发送到Controller 当我发送文件时它正常工作但当我尝试发送数据并且没有任何文件时我得到了。

contentType: false,
processData: false,

当我删除这些代码时,我可以发送数据 我该怎么办?

html代码

<div class="form-group ">
    <input class="form-control" id="title" name="title" type="text" />
</div>
<div class="form-group ">
    <textarea class="form-control" cols="40" id="desc" name="textarea" rows="10"></textarea>
</div>
<div class="form-group ">
    <div class="">
        <div class="radio">
            <label class="radio">
                <input name="answer" id="respawn" type="radio" value="1" /> 1
            </label>
        </div>
        <div class="radio">
            <label class="radio">
                <input name="answer" type="radio" value="2" /> 2
            </label>
        </div>
        <div class="radio">
            <label class="radio">
                <input name="answer" type="radio" value="3" /> 3
            </label>
        </div>
    </div>
</div>
<div class="form-group">
    <input type="file" name="file" id="file">
</div>

控制器代码

public function create(Request $request)
{
    dd($request->all());

    return response()->json([
        'success' => true,

    ]);
}

ajax代码

$("#offer").click(function() {
    var title = $("#title").val();
    var desc = $("#desc").val();
    var respawn = $("#respawn").val();
    var pic = new FormData();
    pic.append('file', $('#file')[0].files[0]);
    var offer = {
        title: title,
        desc: desc,
        respawn: respawn,
        pic: pic
    };
    $.ajax({
        method: 'POST',
        url: '/create',
        headers: {
            'X-CSRF-TOKEN': CSRF_TOKEN
        },
        data: offer,
        contentType: false,
        processData: false,
        success: function(response) {
            alert("Successful!")
        }
    });
});

1 个答案:

答案 0 :(得分:0)

使用以下代码:

$.ajax({
    method:'POST',
    url:'/create',
    headers: {
        'X-CSRF-TOKEN': CSRF_TOKEN
    },
    data:pic,
    contentType: false,
    processData: false,
    success:function(response){
        alert("Successful!")
    }
});

你使用formData代替pic。