Ajax发布请求导致500内部服务器错误 - Laravel

时间:2016-11-16 18:57:52

标签: php laravel laravel-5

简而言之:尝试使用ajax对资源控制器的方法执行POST请求时出现500内部服务器错误。

资源CurrencyController:

public function ajaxDeleteImage() {
    if ($request->isMethod('ajax')) {
        $path = $request->input('imgUrl');
        $id = $request->input('id');

        $currency = Currency::findOrFail($id);
        $currency->cur_icon = '';
        $currency->save();
        Storage::delete($path);

        return 'Deleted image!';
    }

    return App::abort(404);
}

这是我的路线:

/**
 * ajax requests
 */

Route::any('ajax-delete-image-currency', 'CurrencyController@ajaxDeleteImage');

/**
 * admin prefix
 */

Route::group(['prefix' => 'admin', 'middleware' => 'auth'], function() {
    Route::resource('request', 'ReqController');
    Route::resource('currency', 'CurrencyController');
});

edit.blade.php - 我在其中创建了一个包含multipart / form-data的表单:

here are some form html code...

@section('custom_scripts')
<script type="text/javascript">
(function($) {

    var thisUrl = $('input[name="image-hidden"]').val();
    var currencyId = $('input[name=id]').val();

    // console.log(thisUrl);

    $('.del-image').click(function() {
        $.ajax({
            method: 'post',
            url: '/ajax-delete-image-currency',
            data: {imgUrl: thisUrl, id: currencyId},
            success: function(data) {
                console.log("removed image");
                window.location.reload();
            },
            error: function(e) {
                alert('Error' + e);
            }
        });
    });

})(jQuery);
</script>
@endsection

问题是 - 每当我按下类.del-image的按钮(使用ajax发送发布请求)时,我收到内部服务器错误500.

我也尝试从控制器中删除整个方法ajaxDeleteImage。什么都没发生,同样500错误。好像post post无法在CurrencyController中访问该方法。

也许我的路线有问题?错误的排序?我读到我必须在资源控制器之上移动某些方法,因此它可以正常工作,但这不是我的情况。

请提出建议。

1 个答案:

答案 0 :(得分:0)

这是TokenMismatchException in VerifyCsrfToken.php line 67

的问题

所以你必须用你的Ajax请求发送csrf令牌。

使用开发工具找到它 - &gt;网络 - &gt;然后点击错误 - &gt;它会显示实际的反应。

或者如果你正在使用邮递员 - 你会在回复中看到错误。