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

KenavR
sumber

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

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

    }
});
4302836
sumber
0

lulus nilai parameter seperti ini

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

dan seterusnya.

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

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

Aziz Fazli
sumber
-1

Anda juga dapat menggunakan fungsi serializeArray untuk melakukan hal yang sama.

Suresh Prajapat
sumber