web-dev-qa-db-fra.com

jquery form.serialize et d'autres paramètres

Est-il possible d'envoyer un objet form.serialize() et d'autres paramètres avec une seule demande $.ajax()?

Exemple:

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

Sinon, quel est le meilleur moyen de soumettre un formulaire avec d'autres paramètres?.

Merci

92
KenavR

serialize() transforme effectivement les valeurs de formulaire en une chaîne de requête valide, en tant que telle, vous pouvez simplement l'ajouter à la chaîne:

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

Vous pouvez également utiliser form.serialize () avec $ .param (object) si vous stockez vos paramètres dans une variable d’objet. L'utilisation serait:

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

Voir http://api.jquery.com/jQuery.param pour plus de détails.

66
kliszaq

Je ne sais pas mais rien de ce qui précède n'a fonctionné pour moi. Ensuite, j'ai utilisé ceci et cela a fonctionné:

Dans le tableau sérialisé du formulaire, il est stocké sous forme de paire clé-valeur

Nous avons poussé la ou les nouvelles valeurs ici dans la variable de formulaire et nous pouvons ensuite passer cette variable directement maintenant.

var form = $('form.sigPad').serializeArray();
var uniquekey = {
      name: "uniquekey",
      value: $('#UniqueKey').val()
};
form.Push(uniquekey);
7
Rohit Arora

Vous pouvez créer un formulaire auxiliar à l'aide de jQuery avec le contenu d'un autre formulaire, puis ajouter celui-ci à d'autres paramètres afin que vous n'ayez qu'à le sérialiser dans l'appel 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()
}
0
Felixuko

Si vous voulez envoyer des données avec le formulaire sérialiser, vous pouvez essayer ceci

var form= $("#formId");
$.ajax({
    type: form.attr('method'),
    url: form.attr('action'),
    data: form.serialize()+"&variable="+otherData,
    success: function (data) {
    var result=data;
    $('#result').attr("value",result);

    }
});
0
4302836