jQuery: bentuk serialize () dan parameter lainnya


115

Apakah mungkin untuk mengirim elemen formulir (berseri dengan .serialize()metode) dan parameter lain dengan satu permintaan AJAX?

Contoh:

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

Jika tidak, apa cara terbaik untuk mengirimkan formulir bersama dengan parameter lainnya?

Terima kasih

Jawaban:


236

serialize() efektif mengubah nilai formulir menjadi string kueri yang valid, karena itu Anda cukup menambahkan ke string:

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

7
@Falcon Apa maksudmu dengan kelapa di sini?
Shafizadeh

bagaimana saya bisa mengubah 1 ke variabel
Slatan-ko

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

Bisakah Anda jelaskan mengapa di sini tidak perlu contentType ?? Apakah itu ditambahkan secara default?
kernal lora

Ya, bentuk url yang dikodekan adalah default. Lihat dokumentasi jquery untuk info lebih lanjut
Rory McCrossan

77

Atau Anda dapat menggunakan form.serialize()dengan $.param(object)jika Anda menyimpan parameter Anda di beberapa variabel objek. Penggunaannya adalah:

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

Lihat http://api.jquery.com/jQuery.param untuk referensi lebih lanjut.


10
Saya suka yang ini. Itu berarti saya tidak perlu melihat string kueri yang jelek!
Greg Woods

4
Sejauh ini, ini adalah cara yang lebih baik. Jawaban yang diterima berantakan dan tidak boleh digunakan dalam aplikasi produksi apa pun.
FastTrack

3
Jika kita berbicara tentang lingkungan produksi, maka tidak satu pun dari jawaban ini yang harus digunakan. The formharus berisi semua informasi (dalam field tersembunyi jika perlu) sehingga dapat serial dalam satu panggilan. Dengan cara ini jika JS dinonaktifkan atau gagal, pengiriman formulir harus tetap memiliki pengaman dari kegagalan dan menyertakan semua data saat dikirim.
Rory McCrossan

9

Saya tidak tahu tetapi tidak ada yang di atas berhasil untuk saya, Lalu saya menggunakan ini dan berhasil:

Dalam bentuk serial array disimpan sebagai pasangan nilai kunci

Kami mendorong nilai atau nilai baru di sini dalam bentuk variabel dan kemudian kami dapat meneruskan variabel ini secara langsung sekarang.

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

1

Jika Anda ingin mengirim data dengan bentuk serialisasi Anda dapat mencoba ini

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

lulus nilai parameter seperti ini

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

dan seterusnya.


0

Mengikuti jawaban Rory McCrossan , jika Anda ingin mengirim array integer (hampir untuk .NET), ini adalah kodenya:

// ...

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

Anda dapat membuat formulir bantu menggunakan jQuery dengan konten formulir lain dan kemudian menambahkan formulir thath params lain sehingga Anda hanya perlu membuat serial dalam panggilan 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

Saya memperbaiki masalah dengan pernyataan di bawah; mengirim data dengan metode GET url yang sama

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

dan dapatkan nilai dengan $_REQUEST['value']OR$_GET['id']


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.