Почему после ajax запроса перенаправляет на другую страницу?

Здравствуйте. Есть три вопроса, которые я бы хотел, чтобы вы помогли разобрать.
1) Из-за чего может срабатывать сначала success, а сразу за ним error? Ради теста у success и error указывал alert, которые сработали следом друг за другом.

2) После выполнения ajax кода, который указан ниже, перенаправляет на другую страницу. в консоле указано "Navigated to cms/admin/edit/post/3". Из-за чего это может произойти?

3) Почему ajax с datatype: "JSON" срабатывает, если ему передать Response::json(['success' => 'good']), но если передать json_encode(['success' => 'good']) - то ничего не происходит. В чем разница и почему так происходит?
Читал, что Response::json() дополнительно передает Content-Type
form class="form-newCat" action="{{route('categoryStore', $post->id)}}" method="post">
                                <label for="">Название новой рубрики</label>
                                <input type="text" name="nameCategory">
                                {!! csrf_field ()  !!}
                                <button class="newCat" type="submit">Добавить новую рубрику</button>
                            </form>

$('.newCat').click(function () {
        var data = $('.form-newCat').serializeArray();

        $.ajax({
            url: $('.form-newCat').attr('action'),
            data: data,
            headers:{'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
            type: 'POST',
            datatype: "JSON",
            success: function (html) {
                if (html.success) {
                    $('.wrap_result').
                    text('Заявка отправлена!')
                }
            },
            error: 'Ошибка'
        })

Route::group(['prefix' => 'admin'], function () {
    Route::get('/adminPanel', function (){
        return view('admin/adminPanel');
    });
    Route::get('/posts', 'admin\PostController@getAll')->name('posts');
    Route::get('/edit/post/{id}', 'admin\PostController@getOne')->name('post');
    Route::get('/delete/post/{id}', 'admin\PostController@delete')->name('delete');
    Route::post('/edit/post/{id}', 'admin\CategoriesController@store')->name('categoryStore');
});

namespace App\Http\Controllers\admin;

use App\Http\Controllers\Controller;
use App\Category;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Response;

class CategoriesController extends Controller
{
    public function store ()
    {
        return Response::json(['success' => 'good']);
    }
}
  • Вопрос задан
  • 520 просмотров
Решения вопроса 1
перед var data = $('.form-newCat').serializeArray(); напиши event.preventDefault();
У тебя стандартный submit отрабатывает и перебрасывает на роут который в action формы указан
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы