Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

444
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda