Artikel ini menganalisis jenis parameter data Ajax() dalam JQuery melalui contoh. Kongsikan dengan semua orang untuk rujukan anda, butirannya adalah seperti berikut:
Analisis sebelumnya secara ringkas memperkenalkan "Dua cara menghantar parameter data dalam ajax". dalam ajax.
Andaikan terdapat borang sedemikian sekarang, yang digunakan untuk menambah elemen.
<form id='addForm' action='UserAdd.action' type='post'> <label for='uname'>用户名</label>:<input type='text' name='uname' id='uname'><br> <label for='mobileIpt'>手机号:</label><input type='text' name='mobileIpt' id='mobileIpt'><br> <label for='birthday'>生日:</label><input type='text' name='birthday'><br> <input type='button' value='提交' onclick='addUser()'> </form>
Kami tidak mahu menggunakan serah borang untuk menambah elemen ini, kami mahu menggunakan ajax untuk menyerahkan.
Beginilah kami melaksanakannya sebelum ini:
function addUser(){ var user = { uname:$("#uname").val(), mobileIpt:$("#mobileIpt").val(), birthday:$("#birthday").val() }; $.ajax({ url:'UserAdd.action', data:user, type:'post', dataType:'text', success:function(msg){ if(msg=='1'){ console.log('添加成功'); }else{ console.log('添加失败') } } }) }
Tidak ada yang salah dengan ini, tetapi terlalu menyusahkan untuk mendapatkan nilai elemen bentuk.... Terdapat hanya tiga item di sini, dan ia akan menjadi sia-sia jika terdapat banyak item....
Sehingga satu hari, saya menemui kaedah serializeArray jquery
Elemen jadual bersiri (serupa dengan kaedah '.serialize()') mengembalikan data struktur data JSON.
Perhatikan bahawa kaedah ini mengembalikan objek JSON dan bukannya rentetan JSON. Anda perlu menggunakan pemalam atau pustaka pihak ketiga untuk operasi stringifikasi.
Objek JSON yang dikembalikan terdiri daripada tatasusunan objek, di mana setiap objek mengandungi satu atau dua pasangan nilai nama - parameter nama dan parameter nilai (jika nilai tidak kosong).
Jom cuba
$('#addForm').serializeArray(); //返回数据结构,是json数组,每个对像分别name和value为key,代表这个表单元素的name和value [ {"name":"uname","value":""}, {"name":"mobileIpt","value":""}, {"name":"birthday","value":""} ]
Ini nampaknya tidak berguna
Mari gunakan kaedah JQuery.param() untuk mengendalikannya:
var arr = $('#addForm').serializeArray(); $.param(arr); "uname=alice&mobileIpt=110&birthday=1983-05-12"
Hei, kini ia memenuhi keperluan kami Walaupun ia bukan jenis json, ia sekurang-kurangnya boleh dimuat naik sebagai data.
Di sini kita boleh terus mengisi tatasusunan json dalam data ajax, dan memanggil $.param() di dalam jquery untuk memprosesnya.
Mari kita lihat huraian kaedah jquery.param():
Nilai pulangan: StringjQuery.param(obj,[tradisional])
Sirikan tatasusunan unsur bentuk atau objek.
Parameter:
obj,[tradisional]
Objek tatasusunan atau jQuery akan disiri mengikut pasangan nama/nilai, dan objek biasa akan disiri mengikut pasangan kunci/nilai.
tradisional: Sama ada hendak menggunakan serialisasi cetek tradisional.
demo:
$.param({uanme:'vic',mobileIpt:'110',birthday:'2013-11-11'}); "uanme=vic&mobileIpt=110&birthday=2013-11-11"
Melihat pada huraian, nampaknya ia tiada kaitan dengan kami. Mari kita tukarkannya kepada tatasusunan json
$.param([{uanme:'vic'},{mobileIpt:'110'},{birthday:'2013-11-11'}]); "undefined=&undefined=&undefined="
Adakah penukaran ini tidak berjaya Mengapakah data dalam borang kami berjaya ditukar kepada parameter url? Mari lihat kod sumber jquery
//在ajax()方法中,对json类型的数据进行了$.param()处理 if ( s.data && s.processData && typeof s.data !== "string" ) { s.data = jQuery.param( s.data, s.traditional ); } //param方法中 if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { // Serialize the form elements jQuery.each( a, function() { add( this.name, this.value ); }); } else { // If traditional, encode the "old" way (the way 1.3.2 or older // did it), otherwise encode params recursively. for ( prefix in a ) { buildParams( prefix, a[ prefix ], traditional, add ); } }
Sekarang anda faham, jika ia adalah data json, kemudian gelung satu demi satu dan hanya ambil atribut nama dan atribut nilai untuk menyambung rentetan.
Jika ia adalah objek biasa, gelung sifat objek dan kemudian gabungkan rentetan.
Ringkasan:
Jadi, apa yang artikel ini akan katakan ialah dalam fungsi ajax jquery, 3 jenis data boleh dihantar dalam
1. Teks: "uname=alice&mobileIpt=110&birthday=1983-05-12"
Objek 2.json: {uanme:'vic',mobileIpt:'110',hari lahir:'2013-11-11'}
3. tatasusunan json:
[ {"name":"uname","value":"alice"}, {"name":"mobileIpt","value":"110"}, {"name":"birthday","value":"2012-11-11"} ]
Jadi, kita boleh mendapatkan borang dan menghantarnya dengan satu klik, yang sangat mudah.
Tambahan:
Malah, untuk mengekstrak data borang, anda hanya perlu menggunakan kaedah serialize() untuk terus mendapatkan "uname=alice&mobileIpt=110&birthday=1983-05-12".
Saya harap artikel ini akan membantu semua orang dalam pengaturcaraan jQuery.