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

609
Views
¿Cómo modifico los datos del formulario serializado en jQuery?

Estoy tratando de enviar mi formulario en AJAX, así que tengo que serializar () los datos. Pero estoy usando fckEditor y jQuery no sabe cómo manejarlo, así que después de la serialización, intento modificar manualmente el valor, pero hasta ahora no he tenido suerte... alguna idea

 if(content_val!=""){ var values = $("#frmblog").serialize(); values.content = content_val; //content_val is the manually fetched data which I am trying to insert into the serialized content. alert(content_val); alert(values); }
over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

serialize devuelve una cadena codificada en URL que contiene los campos del formulario. Si necesita agregarlo, hágalo utilizando las reglas estándar de cadenas codificadas en URL, por ejemplo:

 var values = $("#frmblog").serialize(); values += "&content=" + encodeURIComponent(content_val);

(Lo anterior supone que siempre habrá un valor en los values después de la llamada de serialize ; si eso no es necesariamente cierto, determine si usar & en función de si los values están vacíos antes de agregarlo).

Alternativamente, si lo desea, puede usar serializeArray y luego agregar a la matriz y usar jQuery.param para convertir el resultado en una cadena de consulta, pero eso parece un largo camino:

 // You can also do this, but it seems a long way 'round var values = $("#frmblog").serializeArray(); values.push({ name: "content", value: content_val }); values = jQuery.param(values);

Actualización : en un comentario agregado más tarde dijiste:

El problema es que se están configurando algunos valores predeterminados en la clave 'contenido' durante el proceso de serialización, por lo que no puedo simplemente adjuntar un nuevo valor, tengo que actualizar el que ya está en él".

Eso cambia las cosas. Es un fastidio buscar content dentro de la cadena codificada en URL, así que iría con la matriz:

 var values, index; // Get the parameters as an array values = $("#frmblog").serializeArray(); // Find and replace `content` if there for (index = 0; index < values.length; ++index) { if (values[index].name == "content") { values[index].value = content_val; break; } } // Add it if it wasn't there if (index >= values.length) { values.push({ name: "content", value: content_val }); } // Convert to URL-encoded string values = jQuery.param(values);

Probablemente querrá hacer de esta una función reutilizable.

over 4 years ago · Santiago Trujillo Report

0

Con ES15 ahora. Puede usar este en su lugar para editar el valor enviado actual (el más corto)

 var values = $("#frmblog").serializeArray(); values.find(input => input.name == 'content').value = content_val; console.log(values);

o función nativa

 var values = $("#frmblog").serializeArray(); values.find(function(input) { return input.name == 'content'; }).value = content_val; console.log(values);
over 4 years ago · Santiago Trujillo Report

0

Aquí hay un complemento jquery completo basado en la respuesta de @TJ. Puedes llamar

 $('form#myForm').awesomeFormSerializer({ foo: 'bar', })

Que reemplazará o agregará el parámetro 'foo' con el valor 'bar' (o cualquier otro parámetro que agregue en el objeto)

Complemento jQuery:

 // Not builtin http://stackoverflow.com/a/5075798/2832282 (function ( $ ) { // Pass an object of key/vals to override $.fn.awesomeFormSerializer = function(overrides) { // Get the parameters as an array var newParams = this.serializeArray(); for(var key in overrides) { var newVal = overrides[key] // Find and replace `content` if there for (index = 0; index < newParams.length; ++index) { if (newParams[index].name == key) { newParams[index].value = newVal; break; } } // Add it if it wasn't there if (index >= newParams.length) { newParams.push({ name: key, value: newVal }); } } // Convert to URL-encoded string return $.param(newParams); } }( jQuery ));
over 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!