Rumah > pembangunan bahagian belakang > tutorial php > Mengapakah \'contentType:False\' Menyebabkan Ralat \'Indeks Tidak Ditakrifkan\' dalam PHP Apabila Menghantar Borang Multipart/form-data dengan jQuery AJAX?

Mengapakah \'contentType:False\' Menyebabkan Ralat \'Indeks Tidak Ditakrifkan\' dalam PHP Apabila Menghantar Borang Multipart/form-data dengan jQuery AJAX?

Patricia Arquette
Lepaskan: 2024-10-26 20:03:29
asal
413 orang telah melayarinya

Why Does

Penyerahan Borang Jquery/Ajax (enctype="multipart/form-data"): Mengapa 'contentType:False' Menyebabkan Indeks Tidak Ditakrifkan dalam PHP

Masalah:

Apabila menggunakan Jquery/ajax untuk menyerahkan borang dengan "enctype='multipart/form-data'" (untuk muat naik fail), tetapkan punca "contentType:False" ralat "Indeks tidak ditentukan" dalam PHP.

Jawapan:

Mengapa "contentType:False" Diperlukan untuk Penyerahan "multipart/form-data"

"contentType:False" menghalang jQuery daripada menambah pengepala "Content-Type" pada permintaan. Dalam penyerahan "multipart/form-data", pengepala "Content-Type" termasuk rentetan sempadan, yang penting untuk pengekodan berbilang bahagian.

Selain itu, "processData:False" juga mesti ditetapkan kepada false untuk mengelakkan jQuery daripada menukar objek "FormData" kepada rentetan, yang akan mengganggu pengekodan berbilang bahagian.

Penyelesaian masalah:

Untuk menyelesaikan isu ini, pertimbangkan langkah berikut:

  • Gunakan kaedah ".serialize()" jQuery untuk mencipta rentetan teks dalam format berkod URL.
  • Pastikan anda menghantar data yang tidak dikodkan apabila menggunakan "contentType:False" .
  • Cuba gunakan objek "BorangData baharu" dan bukannya ".serialize()":
<code class="javascript">var formData = new FormData($(this)[0]);</code>
Salin selepas log masuk
  • Gunakan "console.log()" untuk memeriksa perbezaan antara "FormData baharu" dan "formDataSerialized" (output ".serialize()").

Nota Tambahan:

  • The Tetapan "contentType:False" adalah khusus untuk penyerahan "multipart/form-data" dan tidak diperlukan untuk penyerahan borang lain.
  • Tetapan "processData:False" menghalang jQuery daripada mengubah suai data permintaan, membenarkan anda untuk hantar data mentah ke pelayan.
  • Menyahpepijat isu ini memerlukan pemahaman yang jelas tentang format permintaan dan pengendalian data borang yang betul pada kedua-dua sisi klien dan pelayan.

Atas ialah kandungan terperinci Mengapakah \'contentType:False\' Menyebabkan Ralat \'Indeks Tidak Ditakrifkan\' dalam PHP Apabila Menghantar Borang Multipart/form-data dengan jQuery AJAX?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan