jQuery: serialize () form ve diğer parametreler


115

Tek bir AJAX isteği ile form öğeleri ( .serialize()yöntemle serileştirilmiş ) ve diğer parametreleri göndermek mümkün müdür ?

Misal:

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

Değilse, diğer parametrelerle birlikte bir form göndermenin en iyi yolu nedir?

Teşekkürler

Yanıtlar:


236

serialize() form değerlerini etkili bir şekilde geçerli bir sorgu dizesine dönüştürür, bu nedenle dizeye ekleyebilirsiniz:

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

7
@Falcon Burada hindistancevizi ne demek ?
Shafizadeh

1'i değişkene nasıl değiştirebilirim
Slatan-ko

3
@Shafizadeh Onun bir kafiye (sürü - hindistan cevizi)
Adam

Neden burada contentType'a gerek olmadığını söyler misiniz? Varsayılan olarak eklenir mi?
kernal lora

Evet, URL kodlu form varsayılandır. Daha fazla bilgi için jquery belgelerine bakın
Rory McCrossan

77

Alternatif olarak , parametrelerinizi bir nesne değişkeninde saklarsanız, form.serialize()ile kullanabilirsiniz $.param(object). Kullanım şöyle olacaktır:

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

Daha fazla referans için http://api.jquery.com/jQuery.param adresine bakın .


10
Bunu beğendim. Bu, çirkin bir sorgu dizisine bakmak zorunda olmadığım anlamına geliyor!
Greg Woods

4
Bu açık ara daha iyi bir yoldur. Kabul edilen cevap karışıktır ve hiçbir üretim uygulamasında kullanılmamalıdır.
FastTrack

3
Bir üretim ortamından bahsediyorsak, bu cevapların hiçbiri kullanılmamalıdır. formTek çağrısında serileştirilebilir böylece (gizli alanlar gerekirse cinsinden) tüm bilgileri içermelidir. Bu şekilde, JS devre dışı bırakılırsa veya başarısız olursa, form gönderiminin yine de güvenli olması ve gönderildiğinde tüm verileri içermesi gerekir.
Rory McCrossan

9

Bilmiyorum ama yukarıdakilerin hiçbiri benim için işe yaramadı, Sonra bunu kullandım ve işe yaradı:

Formun serileştirilmiş dizisinde anahtar değer çifti olarak saklanır

Yeni değeri veya değerleri buraya form değişkeni olarak ittik ve sonra bu değişkeni şimdi doğrudan geçirebiliriz.

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

1

Form serileştirme ile veri göndermek istiyorsanız, bunu deneyebilirsiniz.

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

parametrenin değerini böyle geçir

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

ve bunun gibi.


0

Rory McCrossan cevabının ardından , bir tamsayı dizisi göndermek istiyorsanız (neredeyse .NET için), kod budur:

// ...

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

JQuery kullanarak başka bir formun içeriğiyle yardımcı bir form oluşturabilir ve ardından bunları diğer parametrelerden ekleyebilir, böylece yalnızca ajax çağrısında serileştirmeniz gerekir.

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

Problemi under ifadesi ile çözüyorum; url ile aynı GET yöntemiyle veri gönder

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

ve $_REQUEST['value']OR ile değer elde edin$_GET['id']


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.