Ajax receives no response from laravel controller

0

PHP

public function salvar_distrito(Request $request)
{
    $distritos=Distrito::create($request->all());
    if ($distritos) {
        $messagem = 'Adicionado com Sucesso!';
        echo true;
    }
    // Se houver algum erro ao inserir
    else {
        echo "Não foi possível inserir a mensagem no momento.";
    }

JavaScript

<script>
    $(function(){
        // Executa assim que o botão de salvar for clicado
        $('#guardar').click(function(e){
            e.preventDefault();
            // Pega os valores dos inputs e coloca nas variáveis
            var nome = $('#nome').val();
            var provincia_id = $('#provincia_id').val();

            // Método post do Jquery
            $.post('salvar.distrito', {
                nome:nome,
                provincia_id:provincia_id,

            }, function(data){
                // Valida a resposta

                if(data == 1){
                    // Limpa os inputs
                    $('input, textarea').val('');
                    alert('Mensagem enviada com sucesso.');
                }else {
                    alert(resposta);
                }
            });
            return false;
        });

    });
</script>
    
asked by anonymous 03.05.2018 / 13:59

1 answer

0

In Laravel for you to send something via post you need to put @csrf in the form, and when sending using ajax you need to specify it in headers , you can do as follows:

$.ajax({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    },
    type: 'post',
    url: url,
    async: true,
    data: { nome : nome, provincia_id: provincia_id },
    success: function (data) {
        //Dados que chegaram do seu servidor
    }
});

Note: this url is your route, but not separated by points like in Laravel, but the url as shown in the browser.

An example using your code, make sure the route is correct.

<script>
    $(function(){
        // Executa assim que o botão de salvar for clicado
        $('#guardar').click(function(e){
            e.preventDefault();
            // Pega os valores dos inputs e coloca nas variáveis
            var nome = $('#nome').val();
            var provincia_id = $('#provincia_id').val();

            $.ajax({
                headers: {
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                },
                type: 'post',
                url: 'salvar/distrito/',//Acredito que esta seja a sua rota, ela deve ser a mesma que aparece no navegador
                async: true,
                data: { nome : nome, provincia_id: provincia_id },
                success: function (data) {
                    // Valida a resposta
                    if(data == 1){
                        // Limpa os inputs
                        $('input, textarea').val('');
                        alert('Mensagem enviada com sucesso.');
                    }else {
                        alert(resposta);
                    }
                }
            });

            return false;
        });

    });
</script>
    
03.05.2018 / 14:13