Ajax通话问题

时间:2019-06-12 06:51:03

标签: php ajax laravel

我的ajax调用遇到一些问题,我有一个收集组,当我单击显示链接时,它应该向我显示收集的任务。问题是当我尝试为当前收集创建新任务时,我做了50问题的百分比,因为它会在数据库中创建记录,但是会发生一些奇怪的事情。

Form is already submitted even If I do not click the create button

在ajax调用之后,它将在数据库中创建记录,但不会追加新创建的元素,它向我显示了这一点:

Ajax call response

这是我的ajax脚本:

$(document).ready(function() {

        // store task
        $('#create-task').click(function (event) {
            event.preventDefault();

            $.ajax({

                type: 'post',
                dataType: 'json',
                data: $('#create-task-form').serialize(),

                success: function (data) {
                    $('#create-task-form').trigger('reset');
                    $('#createTaskModal').modal('hide');

                    $('.collections').append('<li>' +  data.name + '</li>');
                }

            });

        });
    });

我没有设置网址,因为当我这样做时,它会显示类似这样的内容,而且我也不知道为什么。

Duplicate collection/collection/id

Set the url

路线:

// Collection routes
Route::prefix('collections')->middleware('auth')->group(function() {

    Route::get('/', 'CollectionController@index')->name('collections.index');

    Route::post('/', 'CollectionController@store')->name('collections.store');

    Route::get('/{collection}', 'CollectionController@show')->name('collections.show');

    Route::get('/{collection?}/edit', 'CollectionController@edit')->name('collections.edit');

    Route::patch('/{collection?}', 'CollectionController@update')->name('collections.update');

    Route::delete('/{collection?}', 'CollectionController@destroy')->name('collections.destroy');

    Route::post('/{collection?}', 'CollectionController@storeTask')->name('tasks.store');

});

控制器

 public function storeTask(Request $request)
    {
        $attributes = $request->validate([
            'name' => 'required|min:3',
            'description' => 'nullable|min:3',
            'status' => 'required',
            'due' => 'nullable|date'
        ]);

        $attributes['collection_id'] = $request->collection;

        $task = Task::create($attributes);

        return Response::json($task);
    }

PS:即使后端验证失败,我仍然可以创建记录!

1 个答案:

答案 0 :(得分:0)

根据您的图片,您的路由错误。

您会收到一个404,它试图两次访问收藏夹/收藏夹,从而导致一个不存在的URL。

对此的解决方案是:

 url: {{ url('/collections/25') }},