$(this).serialize() — Wie fügt man einen Wert hinzu?

Lesezeit: 3 Minuten

thisserialize Wie fugt man einen Wert hinzu
Der Ausgang

aktuell habe ich folgendes:

$.ajax({
    type: 'POST',
    url: this.action,
    data: $(this).serialize(),
});

Das funktioniert gut, aber ich möchte den Daten einen Wert hinzufügen, also habe ich es versucht

$.ajax({
    type: 'POST',
    url: this.action,
    data: $(this).serialize() + '&=NonFormValue' + NonFormValue,
});

Aber das wurde nicht richtig gepostet. Irgendwelche Ideen, wie Sie der Serialisierungszeichenfolge ein Element hinzufügen können? Dies ist eine globale Seitenvariable, die nicht formularspezifisch ist.

  • Können Sie erklären, was “das wurde nicht richtig gepostet” bedeutet? Was ist passiert? Was wurde vom Server empfangen?

    – matt b

    30. Juni 11 um 18:40 Uhr

  • Sollte das nicht sein '&NonFormValue=' + NonFormValue?

    – Wesley Murch

    30. Juni 11 um 18:40 Uhr

1643259665 377 thisserialize Wie fugt man einen Wert hinzu
Leigh Brenecki

Während die Antwort von matt b funktioniert, können Sie auch verwenden .serializeArray() um ein Array aus den Formulardaten zu erhalten, es zu ändern und zu verwenden jQuery.param() um es in eine URL-codierte Form umzuwandeln. Auf diese Weise übernimmt jQuery die Serialisierung Ihrer zusätzlichen Daten für Sie.

var data = $(this).serializeArray(); // convert form to array
data.push({name: "NonFormValue", value: NonFormValue});
$.ajax({
    type: 'POST',
    url: this.action,
    data: $.param(data),
});

  • Dies ist definitiv die beste Option – die Serialisierung wird vollständig jQuery überlassen, während die Möglichkeit besteht, den aus dem Formular abgerufenen Werten neue Werte hinzuzufügen.

    – jcsanyi

    15. November 13 um 2:29 Uhr

  • Dies ist der beste Weg, es zu tun, ohne mit Saiten zu spielen

    – Brett Gregson

    25. November 15 um 10:45 Uhr

  • Dies sollte die akzeptierte Antwort sein. Sauber und richtig

    – Mike Aron

    3. Februar 20 um 13:20 Uhr

Anstatt

 data: $(this).serialize() + '&=NonFormValue' + NonFormValue,

Sie wollen wahrscheinlich

 data: $(this).serialize() + '&NonFormValue=" + NonFormValue,

Sie sollten darauf achten, den Wert von URL-kodiert zu verwenden NonFormValue ob es eventuell Sonderzeichen enthält.

  • benutzen encodeURIComponent um sicherzustellen, dass die NonFormValue hat keine Sonderzeichen

    – Yahya Uddin

    29. Februar 16 um 14:14 Uhr

1643259665 537 thisserialize Wie fugt man einen Wert hinzu
Nikhil Bhandari

erstens sollte nicht

data: $(this).serialize() + '&=NonFormValue' + NonFormValue,

Sein

data: $(this).serialize() + '&NonFormValue=" + NonFormValue,

und zweitens können Sie verwenden

url: this.action + "?NonFormValue=" + NonFormValue,

oder wenn die Aktion bereits Parameter enthält

url: this.action + "&NonFormValue=" + NonFormValue,

  • Ihre zweite Antwort hätte nicht die gleiche Wirkung wie die Frage; NonFormValue als URL-Parameter gesendet werden, nicht in den POST-Daten. Dies ist möglicherweise nicht ideal, wenn a) was auch immer auf der Serverseite läuft, erwartet, dass es gepostet wird (zB using request.POST anstatt request.REQUEST in Django) oder b) NonFormValue ist etwas, das aus Sicherheitsgründen oder weil es sich um einen vorübergehenden Wert handelt, nicht in der URL-Leiste oder im Verlauf erscheinen sollte.

    – Leigh Brenecki

    23. Juli 13 um 4:56 Uhr


Vergessen Sie nicht, dass Sie immer Folgendes tun können:

<input type="hidden" name="NonFormName" value="NonFormValue" />

in Ihrer tatsächlichen Form, die für Ihren Code je nach Fall besser sein kann.

Zuerst Artikel hinzufügen und dann serialisieren:

$.ajax({
    type: 'POST',
    url: this.action,
    data: $.extend($(this), {'NonFormValue': NonFormValue}).serialize()
});

  • Hat bei mir auch nicht funktioniert. Es erweitert zwar das Objekt, hat aber nicht wie erwartet funktioniert.

    – Punkt

    17. Dezember 18 um 11:50 Uhr

thisserialize Wie fugt man einen Wert hinzu
Pratik Gadoya

Wir können Folgendes tun:

data = $form.serialize() + "&foo=bar";

Beispielsweise:

var userData = localStorage.getItem("userFormSerializeData");
var userId = localStorage.getItem("userId");

$.ajax({
    type: "POST",
    url: postUrl,
    data: $(form).serialize() + "&" + userData + "&userId=" + userId,
    dataType: 'json',
    success: function (response) {
        //do something
    }
});

  • Hat bei mir auch nicht funktioniert. Es erweitert zwar das Objekt, hat aber nicht wie erwartet funktioniert.

    – Punkt

    17. Dezember 18 um 11:50 Uhr

1643259665 697 thisserialize Wie fugt man einen Wert hinzu
Eugen

das ist besser:

data: [$(this).serialize(),$.param({NonFormValue: NonFormValue})].join('&')

  • Bitte fügen Sie eine detailliertere Beschreibung hinzu, warum dies ein besserer Ansatz ist.

    – Markieren

    30. November 19 um 23:26 Uhr

  • Ein Zeilencode und Sie können das JSON-Objekt für weitere Parameter verwenden.

    – Eugen

    9. Januar 20 um 15:47 Uhr

.

655930cookie-check$(this).serialize() — Wie fügt man einen Wert hinzu?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy