Laravel - Formulario con ajax MethodNotAllowedHttpException

 
Vista:

Formulario con ajax MethodNotAllowedHttpException

Publicado por iker (2 intervenciones) el 07/02/2020 18:26:58
Buenas tardes,

Para empezar comentar que soy nuevo en laravel y todavia estoy aprendiendo...

Tengo un problema que e esta volviendo loco. He buscado en distintos sitios, he realizado un monton de pruebas diferentes y siempre me da el mismo error: MethodNotAllowedHttpException

Lo que quiero hacer es mostrar una tabla con 3 o 4 columnas y con un boton añadir una linea a esa tabla sin recargar la pagina. En principio parece bastante simple la cosa. De momento me como ya me estoy volviendo loco lo he simplificado todo y me vale con que consiga hacer la llamada a la funcion, lo siguiente ya lo solucionare yo. Aqui os dejo el codigo simplificado:

Controladora:

1
2
3
4
5
public function store(Request $request){
 
    $newsubscriber="demo";
    return Response::json($newsubscriber);
}

Ruta:

1
Route::post('/accion', 'AdminIncidenciasController@store')->name('addAccion');

Vista: (aclarar que en la misma vista hay dos forms en dos pestañas diferentes. Es lo unico "raro" que veo..)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<div id="tabs-actualizaciones-estado">
     <form id="subscribeform" method="post" >
 
        <input type="text" name="subscriber" id="subscriber" value="">
        <input type="submit" value="Submit">
    </form>
</div>
 
$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});
 
$("#subscribeform").on("submit",function (e){
    e.preventDefault();
    var emailval=$('#subscriber').val();
    console.log(emailval);
    if(emailval !== "") {
        $.ajax({
            cache: false,
            url:"{{ route('addAccion') }}",        // Only URL changed from your code
            type: 'POST',
            dataType: 'json',
            data: {
                "_token": "{{ csrf_token() }}",
                email:emailvall
            },
            success: function (data) {
                console.log(data);
            }
        });
    }
});


he probado a poner un input csrf, en el data como esta ahora..en vez de route usar la direccion /accion ..y muchas cosas mas pero siempre el mismo error. Hay algo que se me escapa y me parece que sera alguna tonteria.

A ver si alguien me puede echar una mano.

Muchas gracias

Iker
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Cristina
Val: 105
Oro
Ha mantenido su posición en Laravel (en relación al último mes)
Gráfica de Laravel

Formulario con ajax MethodNotAllowedHttpException

Publicado por Cristina (43 intervenciones) el 08/02/2020 07:56:00
Hola, pues se ve bastante bien. Yo probaría meter el headers que tienes arriba en ajaxSetup dentro de la llamada del formulario. También cambiaría el type submit por type button y haría el submit en el success de la llamada ajax después del log. Borra la caché del navegador y pruébalo. Y por si acaso, quita el preventdefault, a veces te fastidia.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Formulario con ajax MethodNotAllowedHttpException

Publicado por iker (2 intervenciones) el 09/02/2020 11:09:11
Hola,

Gracias por contestar.

Acabo de encontrar donde esta el problema. Creo por lo menos. Cuando llevo a la vista donde esta el formulario en cuestion, estoy editando un modelo, y cuando hago click en la accion editar, en la url se incluye la opcion return_url="...". Por lo que haga lo que haga intenta volver a esa url. He creado una ruta con post para esa return url y ya no sale el error.

Pero no quiero hacer eso. Me gustaria quitar esa return_url que creo que es lo correcto. Me podrias decir desde donde se hace eso?

Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar