Laravel Ajax сообщение, не получая ответ, ошибка или вставка БД - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь сделать ajax-вызов POST, который примет входное значение формы, передаст его через маршрут к контроллеру, который вызовет функцию вставки. Я установил свой маршрут, мою функцию вставки, мой контроллер и мой блейд с помощью вызова ajax, но когда я заполняю ввод и нажимаю кнопку отправки, в консоли не возникает ни ответа, ни ошибки, и запись не вставляется в базу данных.

Может быть, я что-то упускаю из виду, но ясно ли, что я здесь упускаю или делаю не так? Возможно, мне следует исправить это по-другому?

Route.php

Route::post('insertFruit', 'Controller@insertFruit');

controller.php

public function insertFruit(Request $request)
{

    if ($request->ajax()) {

        $productComment = $request->productComment;

        $fruitService = new fruitService();
        $fruitService->insertListRecord($productComment);
    }
}

fruitService.php

public function insertListRecord($productComment)
{
    $link = DB::conn();
    $sql = "CALL fruit.fruitInsert(?, ?)";

    $exec = odbc_exec($link, $sql);

    $prep = odbc_prepare($link, $sql);
    if ($prep === false) {
        $error = odbc_errormsg($link);
        if (!empty($error)) {
            throw new \Exception($error);
        }
    }

    $exec = odbc_execute($prep, array($productComment));
    if ($exec === false) {
        $error = odbc_errormsg($link);
        if (!empty($error)) {
            throw new \Exception($error);
        }
    }
}

blade.php

    <form id="productForm" class="uk-form uk-width-1-1">
    <div class="uk-grid">
        <div class="uk-width-1-1">
            <label class="uk-form-label" for="">Comments:</label>
            <textarea name="productComment" id="" cols="70" rows="5" placeholder="Optional"></textarea>
        </div>
    </div>
    <div class="uk-grid">
        <div class="uk-width-1-1 uk-text-center">
            <button id="save" class="uk-button uk-button-primary uk-button-large" style="padding:0 50px;">Save</button>
        </div>
    </div>
</form>

    $("#save").click(function(e){

    e.preventDefault();

    var productComment = $("input[name=productComment]").val();

    $.ajax({
        url:'/insertFruit',
        data:{

            productComment:productComment
        },
        "_token": "{{ csrf_token() }}",
        type:"POST",
        success:function(response){
            console.log(response);
        },
        error: function(jqxhr, status, exception) {
             alert('Exception:', exception);
         }
    });

});

1 Ответ

0 голосов
/ 05 сентября 2018

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

 <form id="productForm" class="uk-form uk-width-1-1" method="post">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...