Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

447
Vistas
Laravel: enviar datos al controlador a través de AJAX sin formulario

Necesito enviar datos a través de JS a un controlador Laravel con un clic de botón. No estoy usando ningún formulario porque los datos se crean dinámicamente. Cada vez que intento enviar los datos, aparece un Error interno del servidor (500), pero no puedo detectar esa excepción en el controlador o en el archivo laravel.log.

Esto es lo que estoy haciendo:

Ruta:

 Route::post('section/saveContactItems', 'SectionController@saveContactItems');

Controlador:

 public function saveContactItems($id, $type, $items, $languageID = "PT"){ ... }

JS:

 $('button').on("click", function (evt) { evt.preventDefault(); var items = []; var id = $("#id").val(); var languageID = $("#languageID").val(); var data = { id: id, type: type, items: JSON.stringify(items), languageID: languageID }; $.ajax({ url: "/section/saveContactItems", type: "POST", data: data, cache: false, contentType: 'application/json; charset=utf-8', processData: false, success: function (response) { console.log(response); } }); });

¿Qué estoy haciendo mal? ¿Cómo puedo lograr esto?

ACTUALIZACIÓN: Gracias a la respuesta de @ShaktiPhartiyal (y la ayuda de @Sanchit) pude resolver mi problema. En caso de que alguien más tenga un problema similar, después de seguir la respuesta de @Shakti, no pude acceder a los datos en el controlador. Entonces, tuve que ordenar los datos antes de enviarlos al servidor:

 data: JSON.stringify(data),
about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

No necesitas usar

 public function saveContactItems($id, $type, $items, $languageID = "PT"){ ... }

Tienes que hacer lo siguiente:

 public function saveContactItems() { $id = Input::get('id'); $type = Input::get('type'); $items = Input::get('items'); $languageID = Input::get('languageID'); }

y sí, como sugirió @Sanchit Gupta, debe enviar el token CSRF con la solicitud:

Métodos para enviar token CSRF en AJAX:

 $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } });

Si utiliza este enfoque, debe establecer una metaetiqueta como esta:

 <meta name="csrf-token" content="{{csrf_token()}}">

o

 data: { "_token": "{{ csrf_token() }}", "id": id }

ACTUALIZAR

como @Sanchit Gupta señaló, use la fachada de entrada así:

 use Input;
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda