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

KenavR
quelle

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"
}
Rory McCrossan
quelle
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 .

kliszaq
quelle
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);
Rohit Arora
quelle
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);

    }
});
4302836
quelle
0

Übergeben Sie den Wert eines Parameters wie folgt

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

und so weiter.

Sanjay
quelle
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)
,             

// ...
Dani
quelle
-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()
}
Felixuko
quelle
-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']

Aziz Fazli
quelle
-1

Sie können auch die Funktion serializeArray verwenden, um dasselbe zu tun.

Suresh Prajapat
quelle