2012-05-01 15 views
76

¿Es posible enviar un objeto form.serialize() y otros parámetros con una sola solicitud $.ajax()?jquery form.serialize y otros parámetros

Ejemplo:

$.ajax({ 
    type : 'POST', 
    url : 'url', 
    data : { 
     $('#form').serialize(), 
     par1 : 1, 
     par2 : '2', 
     par3: 232 
    } 
} 

Si no es así ¿cuál es la mejor manera de presentar un formulario junto con otros parámetros.

Gracias

Respuesta

159

serialize() convierte efectivamente los valores del formulario en una cadena de consulta válida, como tal, sólo tiene que añadir a la cadena:

$.ajax({ 
    type : 'POST', 
    url : 'url', 
    data : $('#form').serialize() + "&par1=1&par2=2&par3=232" 
} 
+10

Muchas gracias hermano de coco – Falcon

+6

@Falcon ¿Cómo que de * coco * aquí? – Shafizadeh

+0

cómo puedo cambiar 1 a la variable –

55

otra posibilidad es utilizar Form.serialize() con $ .PARAM (objeto) si almacena sus parámetros en alguna variable de objeto. El uso sería:

var data = form.serialize() + '&' + $.param(object) 

Ver http://api.jquery.com/jQuery.param para mayor referencia.

+8

Me gusta esta. ¡Significa que no tengo que mirar una cadena de consulta fea! –

+0

Sí, mucho mejor – JSHelp

+4

Esta es la mejor manera, con diferencia. La respuesta aceptada es desordenada y nunca debe usarse en ninguna aplicación de producción. – FastTrack

5

No sé, pero ninguna de las anteriores trabajó para mí, entonces yo uso este y funcionó:

En matriz serializada de la forma que se almacena como valor de par de claves

Empujamos el nuevo valor o valores aquí en la variable de forma y luego podemos pasar esta variable directamente ahora.

var form = $('form.sigPad').serializeArray(); 
var uniquekey = { 
     name: "uniquekey", 
     value: $('#UniqueKey').val() 
}; 
form.push(uniquekey); 
0

puede crear una forma auxiliar con jQuery con el contenido de otra forma y luego añadir otros Thath forma params por lo que sólo tiene que serializar en la llamada AJAX.

function createInput(name,value){ 
    return $('<input>').attr({ 
     name: name, 
     value: value 
    }); 
} 
$form = $("<form></form>"); 
$form.append($("#your_form input").clone()); 
$form.append(createInput('input_name', 'input_value')); 
$form.append(createInput('input_name_2', 'input_value_2')); 
.... 

$.ajax({ 
    type : 'POST', 
    url : 'url', 
    data : $form.serialize() 
} 
-1

que se soluciona el problema bajo la declaración; enviar datos con méthode url misma GET

$.ajax({ 
    url: 'includes/get_ajax_function.php?value=jack&id='+id, 
    type: 'post', 
    data: $('#b-info1').serializeArray(), 

y obtener valor con $ _REQUEST [ 'valor'] O $ _GET [ 'id']

Cuestiones relacionadas