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
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"
}
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.
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);
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()
}
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);
}
});