Laravel 5.2 - 方法[ajax]不存在

时间:2017-02-10 09:59:45

标签: ajax laravel laravel-5.2

我一直在尝试为网络应用创建上传页面。为了将文件发送到服务器,我想使用AJAX,因为我一直在为整个前端使用AJAX GET。

我的问题是,当我尝试使用POST时,我会在一段时间内提供给你的情况,我收到错误消息'方法[ajax]不存在'。

我的路线(POST一个):

Route::group(['prefix' => 'organisatie', 'middleware' => ['web', 'auth', 'ajax'], 'namespace' => 'Organisatie'], function()
{
    Route::group(['prefix' => '{organisatie}/documenten'], function ()
    {
        Route::get('/', 'DriveController@index')->name('drive.index');
        Route::post('/upload', 'DriveController@upload')->name('drive.upload');
    });
});

路线将降至organisatie/{organisatie_id}/documenten/upload

我的DriveController@upload

public function upload(Request $request)
{
    $file = $request->file('file[]');

    return response()->json($file);
}

我的AJAX代码:

var formData = new FormData();

utility.foreach(upload.fileArray.array, function (file) {
    formData.append('file[]', file);
});

var ajax = {
    url: '/organisatie/1/documenten/upload',
    type: 'POST',
    data: formData,
    dataType: 'JSON',
    processData: false,
    success: function (data) {
        console.log(data);
    }
};

$.ajax(ajax);

注意:

  • utility.foreach是我自己的foreach实现,它只是 这一点。
  • upload.fileArray是我定义的数组包装器,它的工作原理如下 预期。
  • 填充upload.fileArray工作正常并经过测试。它来自input[type=file] (multiple)的{​​{1}}。

感谢任何和所有帮助。如果有任何不清楚的地方,请询问。

1 个答案:

答案 0 :(得分:0)

感谢您的帮助。 Neat的回答激发了我检查我的路由设置,看来你仍然应该在POST路由上使用?ajax=functionName。就我而言:

路线:

Route::post('/', 'DriveController@index')->name('drive.upload.post');

AJAX:

var ajax = {
    url: '/organisatie/1/documenten?ajax=upload', <--- '/upload' to '?ajax=upload'
    type: 'POST',
    data: formData,
    dataType: 'JSON',
    processData: false,
    success: function (data) {
        console.log(data);
    }
};

DriveController@upload -> DriveController@ajaxUpload

出于某种原因,我无法在任何地方找到这个答案,所以我希望这对某人有帮助。