Karena Microsoft membatasi ukuran data yang dikirimkan melalui POST, ketika jumlah data yang dikirim melalui formulir besar, kesalahan akan dilaporkan (kesalahan ASP 0107: 80004005). Alasannya adalah Microsoft membatasi data maksimum yang dapat diterima menggunakan Request.Form() hingga 100K byte. Solusi untuk masalah ini adalah untuk domain yang perlu mengirim data besar, pisahkan data menjadi beberapa bagian lebih kecil dari batas sebelum mengirimkan formulir, letakkan di beberapa kolom tersembunyi, hapus kolom asli secara bersamaan, lalu menyerahkan formulir secara resmi. Server masih menggunakan Request.Form() untuk membaca data di setiap bidang tersembunyi, lalu menggabungkannya secara berurutan. Kode utamanya adalah sebagai berikut:
Catatan: Anda perlu menentukan DIV dalam kode HTML di Formulir untuk memasukkan kolom tersembunyi ke dalamnya secara dinamis.
====Kode contoh klien====
Tambahkan: <div id=divHidden></div> ke kode HTML di Formulir. Tambahkan: onSubmit=return fnPreHandle(this) ke tag Formulir. Ganti BigField pada kode di bawah ini dengan kolom di formulir Anda yang mengirimkan nama database besar.
kode JavaScript
Copy kode kodenya sebagai berikut:
<bahasa skrip=javascript>
//Data dipisahkan dan ditempatkan di domain tersembunyi yang sesuai, yang dipicu dalam event onSubmit pada Formulir
fungsi fnPreHandle(Formulir Saya)
{
var iCount; //Berapa banyak domain yang akan dipecah
var strData; //data asli
var iMaxChars = 50000;//Mengingat karakter Cina adalah byte ganda, jumlah maksimum karakter dalam domain dibatasi hingga 50K
var iBottleNeck = 2000000; //Jika artikel melebihi 2 juta kata, pengguna perlu diminta
var strHTML;
//data asli
strData = MyForm.BigField.value;
//Jika artikel terlalu panjang, pengguna perlu diingatkan
jika (strData.panjang > iBottleNeck)
{
if (confirm(Artikel yang ingin Anda terbitkan terlalu panjang, disarankan agar Anda membaginya menjadi beberapa bagian dan menerbitkannya secara terpisah./nJika Anda bersikeras untuk mengirimkannya, harap diperhatikan bahwa akan membutuhkan waktu lama untuk berhasil dikirimkan./ t/nApakah Anda bersikeras untuk mengirimkan?) == false )
kembali salah;
}
iCount = parseInt(strData.length / iMaxChars) + 1;
//hdnCount mencatat berapa banyak sub-domain tempat domain data asli dibagi
strHTML = <tipe masukan=nama tersembunyi=hdnHitung nilai= + iHitungan + >;
//Buat kode HTML untuk setiap subdomain
untuk (var i = 1; i <= iHitungan; i++)
{
strHTML = strHTML + /n + <tipe masukan=nama tersembunyi=hdnBigField + i + >;
}
//Masukkan kode HTML setiap kolom tersembunyi secara dinamis ke dalam DIV (divHidden) di Formulir
dokumen.all.divHidden.innerHTML = strHTML;
//Tetapkan nilai ke setiap subbidang
untuk (var i = 1; i <= iHitungan; i++)
{
MyForm.elements[hdnBigField + i].value = strData.substring((i - 1) * iMaxChars, i * iMaxChars);
}
//Hapus kolom data asli
MyForm.BigField.value = ;
}
</skrip>
Kode contoh sisi server kode ASP/Visual Basic
Copy kode kodenya sebagai berikut:
<%
Redupkan strData
Redupkan intFieldCount
Redupkan saya
intFieldCount = Permintaan.Formulir(hdnCount)
Untuk i=1 Ke intFieldCount
strData = strData & Permintaan.Formulir(hdnBigfield & i)
Berikutnya
Respon.Tulis strData
%>