Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

441
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!