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
359 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!

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