jQuery: serialize () -Formular und andere Parameter


113

Ist es möglich, Formularelemente (serialisiert mit .serialize()Methode) und andere Parameter mit einer einzigen AJAX-Anfrage zu senden ?

Beispiel:

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

Wenn nicht, wie kann ich ein Formular am besten zusammen mit anderen Parametern einreichen?

Vielen Dank

Antworten:


235

serialize() Verwandelt die Formularwerte effektiv in einen gültigen Querystring, sodass Sie ihn einfach an die Zeichenfolge anhängen können:

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

7
@ Falcon Was meinst du mit Kokosnuss hier?
Shafizadeh

Wie kann ich 1 in Variable ändern
Slatan-ko

3
@ Shafizadeh Es ist ein Reim (viel - Kokosnuss)
Adam

Kannst du bitte sagen warum hier kein contentType benötigt wird ?? Wird das standardmäßig hinzugefügt?
Kernal Lora

Ja, die verschlüsselte Formular-URL ist die Standardeinstellung. Weitere Informationen finden Sie in der jquery-Dokumentation
Rory McCrossan

77

Alternativ können Sie form.serialize()mit verwenden, $.param(object)wenn Sie Ihre Parameter in einer Objektvariablen speichern. Die Verwendung wäre:

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

Weitere Informationen finden Sie unter http://api.jquery.com/jQuery.param .


10
Ich mag diesen. Das heißt, ich muss mir keinen hässlichen Querystring ansehen!
Greg Woods

4
Dies ist bei weitem der bessere Weg. Die akzeptierte Antwort ist chaotisch und sollte niemals in einer Produktionsanwendung verwendet werden.
FastTrack

3
Wenn es sich um eine Produktionsumgebung handelt, sollte keine dieser Antworten verwendet werden. Die formsollten alle Informationen enthalten (ggf. in ausgeblendeten Feldern), damit sie in einem einzigen Aufruf serialisiert werden können. Auf diese Weise sollte die Formularübermittlung, wenn JS deaktiviert ist oder fehlschlägt, immer noch ausfallsicher sein und beim Senden alle Daten enthalten.
Rory McCrossan

9

Ich weiß es nicht, aber keines der oben genannten hat bei mir funktioniert. Dann habe ich es benutzt und es hat funktioniert:

Im serialisierten Array des Formulars wird es als Schlüsselwertpaar gespeichert

Wir haben den neuen Wert oder die neuen Werte hier in die Formularvariable verschoben und können diese Variable jetzt direkt übergeben.

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

1

Wenn Sie Daten mit Formularserialisierung senden möchten, können Sie dies versuchen

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

Übergeben Sie den Wert eines Parameters wie folgt

data : $('#form_id').serialize() + "&parameter1=value1&parameter2=value2"

und so weiter.


0

Nach der Antwort von Rory McCrossan lautet der folgende Code , wenn Sie ein Array mit Ganzzahlen (fast für .NET) senden möchten :

// ...

url: "MyUrl",       //  For example --> @Url.Action("Method", "Controller")
method: "post",
traditional: true,  
data: 
    $('#myForm').serialize() +
    "&param1="xxx" +
    "&param2="33" +
    "&" + $.param({ paramArray: ["1","2","3"]}, true)
,             

// ...

-1

Sie können mit jQuery ein Hilfsformular mit dem Inhalt eines anderen Formulars erstellen und dann dieses Formular mit anderen Parametern hinzufügen, sodass Sie es nur im Ajax-Aufruf serialisieren müssen.

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()
}

-1

Ich behebe das Problem mit under Anweisung; Daten mit der gleichen GET-Methode senden

$.ajax({
    url: 'includes/get_ajax_function.php?value=jack&id='+id,
    type: 'post',
    data: $('#b-info1').serializeArray(),

und Wert mit $_REQUEST['value']ODER erhalten$_GET['id']


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.