Проблема с AJAX Post запросом в laravel - PullRequest
1 голос
/ 08 мая 2019

У меня есть поле выбора, и когда каждый элемент выбран, отправляется запрос ajax.но мой код не работает.я получаю статус 404, и эта ошибка отображается в консоли

exception: "Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException", file: "F:\\source\\boiler\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\RouteCollection.php", line: 179, … 

мой маршрут:

 Route::group(['namespace' => 'BuyCrypto' , 'prefix' => 'crypto'], function() {
          Route::post('/calculateBuyAmount' , [BuyCryptoController::class , 'calculateAmount'])->name('calculate.amount');
        });

код ajax:

$("select#user_select_crypto").change(function(e) {

    $('#calculat_user_buy').block({
        message: '<i class="icon-spinner4 spinner"></i>',

        overlayCSS: {
            backgroundColor: '#fff',
            opacity: 0.8,
            cursor: 'wait'
        },
        css: {
            border: 0,
            padding: 0,
            backgroundColor: 'transparent'
        }
    });

    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });
    e.preventDefault();
    $.ajax({
        url: "panel/crypto/calculateBuyAmount",
        dataType: 'json',
        data: {

            user_select_crypto: $("input[name=user_select_crypto]").val(),
            user_value_request: $("input[name=user_value_request]").val(),
        },
        success: function(result) {

            console.log(result)
        },
        error: function(result) {

            console.log(result)

        },
    });
});

в чем проблема

Ответы [ 2 ]

0 голосов
/ 08 мая 2019

это потому, что laravel не получает полный URL вашего маршрута.Вы должны указать правильный маршрут.для этого вы можете использовать свой именованный маршрут, как показано ниже.

url: "{{ route('calculate.amount') }}",

или в случае, если вы находитесь в файле javascript и не можете использовать blade-сервер, чем просто дать URL-адрес с / косой чертой.все будет работать.Это происходит с запросом на публикацию.

Вы можете указать URL, как показано ниже

url: "/panel/crypto/calculateBuyAmount",

Обновлено

Теперь вы сталкиваетесь с methodNotAllowedException, потому что теперь выотправив запрос на получение, потому что вы не упоминаете на стороне ajax, что делаете запрос post.по умолчанию ajax отправит запрос get.так что вам нужно указать ajax использовать метод post.вот так type: "POST" как ниже

$.ajax({
        url: "/panel/crypto/calculateBuyAmount",
        dataType: 'json',
        type : 'POST'
        data: {

            user_select_crypto: $("input[name=user_select_crypto]").val(),
            user_value_request: $("input[name=user_value_request]").val(),
        },
        success: function(result) {

            console.log(result)
        },
        error: function(result) {

            console.log(result)

        },
    });
0 голосов
/ 08 мая 2019

В такой ситуации полезно использовать именованный маршрут, когда вы даете своему маршруту имя.

$.ajax({
    url: "{{ route('calculate.amount') }}",   // use your name route here
    type : 'POST',   // need to add your request type post 
    dataType: 'json',
    data: {

        user_select_crypto: $("input[name=user_select_crypto]").val(),
        user_value_request: $("input[name=user_value_request]").val(),
    },
    success: function(result) {

        console.log(result)
    },
    error: function(result) {

        console.log(result)

    },
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...