form example ejemplos data javascript jquery

javascript - example - send object ajax c#



jQuery post() con serialización y datos adicionales (9)

De acuerdo, entonces estoy tratando de averiguar si es posible publicar serialize () y otros datos que están fuera del formulario.

Esto es lo que pensé que funcionaría, pero solo envía ''lista de palabras'' y no los datos del formulario.

$.post("page.php",( $(''#myForm'').serialize(), { ''wordlist'': wordlist }));

¿Alguien tiene alguna idea?


Cuando desee agregar un objeto javascript a los datos del formulario, puede usar el siguiente código

var data = {name1: ''value1'', name2: ''value2''}; var postData = $(''#my-form'').serializeArray(); for (var key in data) { if (data.hasOwnProperty(key)) { postData.push({name:key, value:data[key]}); } } $.post(url, postData, function(){});

O si agrega el método serializeObject() , puede hacer lo siguiente

var data = {name1: ''value1'', name2: ''value2''}; var postData = $(''#my-form'').serializeObject(); $.extend(postData, data); $.post(url, postData, function(){});


En la nueva versión de jquery, podría hacerlo a través de los siguientes pasos:

  • obtener matriz param a través de serializeArray()
  • call push() o métodos similares para agregar parámetros adicionales a la matriz,
  • llame a $.param(arr) para obtener una cadena serializada, que podría ser utilizada como parámetro de data jquery ajax.

Código de ejemplo:

var paramArr = $("#loginForm").serializeArray(); paramArr.push( {name:''size'', value:7} ); $.post("rest/account/login", $.param(paramArr), function(result) { // ... }


Me gusta mantener los objetos como objetos y no hacer ningún cambio de tipo loco. Aquí está mi camino

var post_vars = $(''#my-form'').serializeArray(); $.ajax({ url: ''//site.com/script.php'', method: ''POST'', data: post_vars, complete: function() { $.ajax({ url: ''//site.com/script2.php'', method: ''POST'', data: post_vars.concat({ name: ''EXTRA_VAR'', value: ''WOW THIS WORKS!'' }) }); } });

si no puede ver desde arriba, utilicé la función .concat y pasé un objeto con la variable post como ''nombre'' y el valor como ''valor''!

Espero que esto ayude.


Pruebe $.param

$.post("page.php",( $(''#myForm'').serialize()+''&''+$.param({ ''wordlist'': wordlist })));


Puede hacer que el formulario contenga los datos adicionales como campos ocultos que establecería justo antes de enviar la solicitud AJAX a los valores correspondientes.

Otra posibilidad consiste en utilizar esta pequeña joya para serializar su formulario en un objeto javascript (en lugar de cadena) y agregar los datos faltantes:

var data = $(''#myForm'').serializeObject(); // now add some additional stuff data[''wordlist''] = wordlist; $.post(''/page.php'', data);


Puede usar serializeArray [docs] y agregar los datos adicionales:

var data = $(''#myForm'').serializeArray(); data.push({name: ''wordlist'', value: wordlist}); $.post("page.php", data);


Puedes usar esto

var data = $("#myForm").serialize(); data += ''&moreinfo=''+JSON.stringify(wordlist);


Una solución alternativa, en caso de que necesite hacer esto en una carga de archivo ajax:

var data = new FormData( $(''#form'')[0] ).append( ''name'' , value );

O incluso más simple.

$(''form'').on(''submit'',function(e){ e.preventDefault(); var data = new FormData( this ).append(''name'', value ); // ... your ajax code here ... return false; });


$.ajax({ type: ''POST'', url: ''test.php'', data:$("#Test-form").serialize(), dataType:''json'', beforeSend:function(xhr, settings){ settings.data += ''&moreinfo=MoreData''; }, success:function(data){ // json response }, error: function(data) { // if error occured } });