Laravel AJAX请求,方法不允许

时间:2015-10-02 07:49:27

标签: php jquery laravel laravel-5

尝试通过bluimp的jQueryFileUpload上传图片时遇到问题。

在我的路线中,我有这个:<form>

我的文件输入位于<input id="imageupload" type="file" name="image" multiple="" data-url="{{ url('admin/image/upload/members') }}" > 标记之外,因为它独立于表单:

  $('#imageupload').fileupload({
        dataType: 'json',
        maxFileSize: 5000000,
        acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
        done: function (e, data) {
            Members.handle_image(data);
        }
   });

我的jQuery函数指向data-url属性值。:

example.app/admin/members/create

奇怪的是,当我从example.app/admin/members/1/edit调用此方法时,它可以正常工作,但当我尝试从Method not allowed访问它时,我会得到405,Route::get('members/create', [ 'uses' => 'MembersController@create', 'as' => 'admin/members/create' ]); Route::get('members/{member}/edit', [ 'uses' => 'MembersController@edit', 'as' => 'admin/members/edit' ]);

在这两种情况下,方法都是POST。

我创建和编辑URI的路线:

<input type="text" class="form-control" name="phone" id="phone" data-mask="999999999?9" />

我确定这是一件非常愚蠢的事情,我无法看到。

PS。我有一个Project资源,我也使用相同的路由和功能上传图像。它适用于两种情况(创建和编辑)。

有人有这个问题吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

HTTP 405表示不支持请求方法。

您的两条路线都会收听请求

Route::get('members/create', [
    'uses' => 'MembersController@create', 'as' => 'admin/members/create'
]);
Route::get('members/{member}/edit', [
    'uses' => 'MembersController@edit', 'as' => 'admin/members/edit'
]);

你确定你不想要一个或两个都要发布吗?

Route::post('members/create', [
    'uses' => 'MembersController@create', 'as' => 'admin/members/create'
]);
Route::post('members/{member}/edit', [
    'uses' => 'MembersController@edit', 'as' => 'admin/members/edit'
]);

答案 1 :(得分:0)

好的,我设法解决了这个问题,但我真的不明白它为什么不起作用。

在我的路线中,我有这个,其中ajax网址指向POST:

Route::post('image/upload/{folder}', 'ImageController@upload');

这不起作用。 我改成了:

Route::any('image/upload/{folder}', 'ImageController@upload');

现在它有效。

这很奇怪,因为在我的请求标题上我有POST方法,但是使用post(在路由中)我没有工作。