70 votes

Comment ajouter des données via $.ajax (serialize() + des données supplémentaires) comme ceci

Je veux ajouter des données supplémentaires après avoir utilisé $('#myForm').serialize() + des données supplémentaires

$.ajax({
   type: 'POST',
   url: $('#myForm').attr('action'),
   data: $('#myForm').serialize(),   // JE VEUX AJOUTER DES DONNÉES SUPPLÉMENTAIRES + DONNÉES SÉRIALISÉES
   success: function(data){
      alert(data);
      $('.tampil_vr').text(data);
   }
});

168voto

jthompson Points 2854

De quel type de données s'agit-il ?

data: $('#myForm').serialize() + "&moredata=" + morevalue

Le paramètre "data" est simplement une chaîne URL encodée. Vous pouvez y ajouter ce que vous voulez. Veuillez consulter l'API ici.

0 votes

Merci jthompson cela fonctionne très bien... Je ne vois pas $.ajax manuel pas serialize() (débutant en ajax)

7 votes

Si plus d'un élément de données doit être ajouté, vous pouvez envisager d'utiliser ...serialize()+'&'+$.param(myParametersObject) où myParametersObject est un objet simple comme {'param':'val','param2':'val2',...}

0 votes

serialize va encoder les données en URL, donc je préfère lui laisser faire le travail : $('#myForm, #moredataid').serialize()

9voto

steadweb Points 171

Personnellement, je préfère ajouter l'élément au formulaire plutôt que de modifier les données sérialisées, par exemple.

moredata = 'vos données personnalisées ici';

// faites ce que vous voulez avec l'entrée
$input = $('').val(morevalue);

// ajouter au formulaire
$('#myForm').append($input);

// puis..
data: $('#myForm').serialize()

De cette façon, vous n'avez pas à vous soucier de ? ou de &

1 votes

Vous sérialisez un formulaire alors pourquoi y aurait-il un cas de ? ou &??? Ce serait toujours un & sauf si vous sérialisez un formulaire vide...qui n'a alors aucun intérêt

0 votes

Pourquoi devrais-je avoir à faire avec ça en premier lieu? Pourquoi ne pas simplement ajouter l'élément au formulaire, puis le sérialiser, plus propre que de devoir concaténer des chaînes au formulaire sérialisé, ce qui pourrait conduire à une erreur si le développeur oublie simplement un & ou un = pour chaque champ ajouté.

3 votes

Ensuite, je recommanderais d'utiliser .serializeArray() et d'ajouter les données au tableau à la place. Il sera publié de la même manière. Voir stackoverflow.com/questions/14102732/…

4voto

PrakashG Points 1625

Vous pouvez le faire de cette manière :

postData[postData.length] = { name: "nom_de_la_variable", value: valeur_de_la_variable };

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X