So fügen Sie Daten über $ .ajax (serialize () + zusätzliche Daten) wie folgt hinzu

69

Ich möchte zusätzliche Daten hinzufügen, nachdem ich $ ('# myForm'). Serialize () + zusätzliche Daten verwendet habe

$.ajax({
   type: 'POST',
   url: $('#myForm').attr('action'),
   data: $('#myForm').serialize(),   // I WANT TO ADD EXTRA DATA + SERIALIZE DATA
   success: function(data){
      alert(data);
      $('.tampil_vr').text(data);
   }
});
Joko Wandiro
quelle

Antworten:

163

Welche Art von Daten?

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

Der Parameter "data" ist nur eine URL-codierte Zeichenfolge. Sie können es anhängen, wie Sie möchten. Siehe die API hier .

jthompson
quelle
danke jthompson es funktioniert sehr gut ... Ich sehe $ .ajax Handbuch nicht serialisieren () (Neuling in Ajax)
Joko Wandiro
6
Wenn mehr als ein einzelnes Datenelement hinzugefügt werden muss, können Sie in Betracht ziehen, ...serialize()+'&'+$.param(myParametersObject)wo myParametersObject ein einfaches Objekt wie{'param':'val','param2':'val2',...}
epeleg
serializewird die Daten url-codieren, also lasse ich es lieber die Arbeit machen:$('#myForm, #moredataid').serialize()
Andy G
9

Persönlich würde ich das Element an das Formular anhängen, anstatt die serialisierten Daten zu hacken, z

moredata = 'your custom data here';

// do what you like with the input
$input = $('<input type="text" name="moredata"/>').val(morevalue);

// append to the form
$('#myForm').append($input);

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

Auf diese Weise müssen Sie sich keine Sorgen um ?oder machen&

Steadweb
quelle
1
Sie serialisieren ein Formular. Warum sollte es jemals einen Fall geben? oder &??? Es wäre immer ein &, es sei denn, Sie serialisieren ein leeres Formular ... <form id="someForm"></form>was wiederum keinen Sinn hat
zgr024
Warum sollte ich mich überhaupt damit befassen müssen? Warum nicht einfach das Element an das Formular anhängen und es dann serialisieren, sauberer, als Zeichenfolgen mit dem serialisierten Formular verknüpfen zu müssen, was der Entwickler einfach falsch machen könnte, wenn für jedes hinzugefügte Feld ein & oder = fehlt.
Steadweb
3
Dann würde ich empfehlen, stattdessen .serializeArray()die Daten zu verwenden und an das Array anzuhängen. Es wird in beiden Fällen genauso gepostet. Siehe stackoverflow.com/questions/14102732/…
zgr024
1
Genau. Ich möchte einfach keine Elemente an die serialisierte Zeichenfolge anhängen, sondern die jQuery die harte Arbeit erledigen lassen.
Steadweb
3

Sie können es so machen:

postData[postData.length] = { name: "variable_name", value: variable_value };
PrakashG
quelle