jQuery: serialize () formularz i inne parametry


115

Czy możliwe jest wysyłanie elementów formularza (serializowanych .serialize()metodą) i innych parametrów za pomocą jednego żądania AJAX?

Przykład:

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

Jeśli nie, to jaki jest najlepszy sposób na przesłanie formularza wraz z innymi parametrami?

Dzięki

Odpowiedzi:


236

serialize() skutecznie zamienia wartości formularza w prawidłowy querystring, jako taki możesz po prostu dołączyć do ciągu:

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

7
@Falcon co masz na myśli z kokosa tutaj?
— Shafizadeh

jak mogę zmienić 1 na zmienną
— Slatan-ko

3
@Shafizadeh Its a rhyme (alot - coconut)
— Adam

Czy możesz powiedzieć, dlaczego tutaj nie ma potrzeby contentType? Czy to jest dodawane domyślnie?
— kernal lora

Tak, adres URL formularza jest kodowany domyślnie. Zobacz dokumentację jquery, aby uzyskać więcej informacji
— Rory McCrossan,

77

Alternatywnie możesz użyć form.serialize()with, $.param(object)jeśli przechowujesz parametry w jakiejś zmiennej obiektu. Zastosowanie byłoby następujące:

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

Więcej informacji można znaleźć pod adresem http://api.jquery.com/jQuery.param .


10
Podoba mi się ten. To znaczy, że nie muszę patrzeć na brzydkie querystring!
— Greg Woods

4
To zdecydowanie lepszy sposób. Przyjęta odpowiedź jest niechlujna i nigdy nie powinna być używana w żadnej aplikacji produkcyjnej.
— FastTrack

3
Jeśli mówimy o środowisku produkcyjnym, żadnej z tych odpowiedzi nie należy używać. formPowinno zawierać wszystkie informacje (w ukrytych pól w razie potrzeby), dzięki czemu można go serializacji w jednym połączeniu. W ten sposób, jeśli JS jest wyłączony lub zawiedzie, przesyłanie formularza powinno nadal być bezpieczne i zawierać wszystkie dane po wysłaniu.
— Rory McCrossan

9

Nie wiem, ale żadne z powyższych nie działało dla mnie, wtedy użyłem tego i zadziałało:

W serializowanej tablicy formularza jest on przechowywany jako para klucz-wartość

Wprowadziliśmy nową wartość lub wartości tutaj w postaci zmiennej, a następnie możemy teraz bezpośrednio przekazać tę zmienną.

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

1

Jeśli chcesz wysłać dane z serializacją formularza, możesz spróbować tego

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

przekazać wartość parametru w ten sposób

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

i tak dalej.


0

Zgodnie z odpowiedzią Rory'ego McCrossana , jeśli chcesz wysłać tablicę liczb całkowitych (prawie dla .NET), oto kod:

// ...

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

Możesz utworzyć pomocniczy formularz używając jQuery z zawartością innego formularza, a następnie dodać go z innych parametrów, więc musisz tylko serializować go w wywołaniu ajax.

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

Naprawiam problem ze stwierdzeniem under; wysyłaj dane z adresem URL w tej samej metodzie GET

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

i uzyskaj wartość za pomocą $_REQUEST['value']OR$_GET['id']


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.