我一直在尝试为网络应用创建上传页面。为了将文件发送到服务器,我想使用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}}。感谢任何和所有帮助。如果有任何不清楚的地方,请询问。
答案 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
出于某种原因,我无法在任何地方找到这个答案,所以我希望这对某人有帮助。