Cara menggunakan kaedah $.param tanpa pengekodan URL

PHPz
Lepaskan: 2023-04-17 15:15:07
asal
817 orang telah melayarinya

Apabila menggunakan permintaan Ajax jQuery, kami sering menggunakan kaedah $.param untuk menyerikan objek ke dalam rentetan pertanyaan untuk memudahkan penghantaran data. Kaedah $.param secara automatik mengekod data, contohnya, menukar ruang kepada %20. Walau bagaimanapun, kadangkala kami ingin mensirikan objek tanpa pengekodan URL dan mengekalkannya seperti sedia ada. Artikel ini akan memperkenalkan cara menggunakan kaedah $.param tanpa pengekodan URL.

Pertama, mari kita lihat penggunaan asas kaedah $.param. Katakan kita mempunyai objek berikut:

var data = {
  name: 'John Doe',
  age: 30,
  company: 'ABC Inc.',
  address: {
    street: '123 Main St',
    city: 'Anytown',
    state: 'CA',
    zip: '12345'
  }
};
Salin selepas log masuk

Kita boleh menggunakan kaedah $.param untuk mensirikannya ke dalam rentetan pertanyaan, seperti yang ditunjukkan di bawah:

var queryString = $.param(data);

// queryString 的值为:
// "name=John%20Doe&age=30&company=ABC%20Inc.&address%5Bstreet%5D=123%20Main%20St&address%5Bcity%5D=Anytown&address%5Bstate%5D=CA&address%5Bzip%5D=12345"
Salin selepas log masuk

Seperti yang anda lihat, $.param Kaedah URL mengekod objek, menukar ruang kepada %20 dan mengekod beberapa aksara khas. Jika kita ingin mengekalkan rupa asal, kita perlu menggunakan sedikit muslihat.

Pertama, kita perlu mentakrifkan fungsi yang tidak melaksanakan pengekodan URL, seperti berikut:

function serializeParam(obj) {
  var str = [];
  for (var p in obj) {
    if (obj.hasOwnProperty(p)) {
      str.push(encodeURIComponent(p) + '=' + obj[p]);
    }
  }
  return str.join('&');
}
Salin selepas log masuk

Fungsi fungsi ini adalah untuk menukar objek kepada rentetan, yang tidak melaksanakan pengekodan URL. Seterusnya, kita boleh menggunakan fungsi ini untuk menyerikan objek ke dalam rentetan pertanyaan, seperti yang ditunjukkan di bawah:

var queryString = Object.keys(data).map(function(key) {
  var value = data[key];
  if (typeof value === 'object') {
    value = serializeParam(value).replace(/%20/g, '+');
  }
  return encodeURIComponent(key) + '=' + value;
}).join('&');

// queryString 的值为:
// "name=John Doe&age=30&company=ABC Inc.&address[street]=123 Main St&address[city]=Anytown&address[state]=CA&address[zip]=12345"
Salin selepas log masuk

Seperti yang anda lihat, rentetan pertanyaan yang dijana oleh kaedah ini bukan dikodkan URL, tetapi Spaces adalah digantikan dengan tanda tambah. Oleh itu, jika pelayan yang menerima data boleh menyokong kaedah penghantaran ini, kita boleh menggunakan kaedah ini.

Ringkasnya, kami boleh menyerikan objek dalam jQuery tanpa pengekodan URL dengan menggunakan fungsi tersuai untuk memenuhi keperluan khusus kami.

Atas ialah kandungan terperinci Cara menggunakan kaedah $.param tanpa pengekodan URL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan