通过ajax传递的formData在Laravel中不可用

时间:2017-02-28 22:23:59

标签: php jquery ajax laravel-5

这是我的表格:

<form role="form" action="{{ route('excel.form') }}" method="post" enctype="multipart/form-data">
        Select an excel file to upload:
        <input type="file" name="fileToUpload" id="fileToUpload" multiple>
        <input type="submit" value="upload" name="submit">
        {{ csrf_field() }}
</form>

js代码:

$('#fileToUpload').on('change',function(e){

                 var myFile = e.target.files[0];
                 var f_data = new FormData(); 
                 f_data.append('file', myFile);

                 $.ajax({
                    type : 'get',
                    data : f_data,
                    dataType : 'JSON',
                    url : "{{route('excel.form.ajax')}}",
                    processData: false,
                    contentType: false,

                 }).done(function(data){
                    console.log(data);
                 });
});

这里是ajax调用的路由:

Route::get('/ex2','ExcelController@ajax')->name('excel.form.ajax');

我在Laravel ExcelController文件中的代码:

public function ajax(Request $r)
{
    return ['all_data' => $r->all(), 
            'request_files' => $r->allFiles(), 
            '$_FILES' => $_FILES, 
            'valid' => $r->file('file')->isValid()
           ];
}

............. 现在从控制器方法,当我使用&#34; 有效&#34;返回数组时键,输出是一堆空数组的对象。但我至少得到了回报。

但是当我添加

'valid' => $r->file('file')->isValid()

在要返回的数组中,如上面的代码所示,返回是内部服务器错误,这个:

获取http://localhost/larajects/ghureBerai02/public/ex2?[object%20FormData] 500(内部服务器错误)

我认为这是因为isValid()方法被调用为空。这意味着formData由于某种原因未被传递。

即使是

if($r->all()) 

返回false

任何人都可以告诉我这个问题的原因是什么?

0 个答案:

没有答案