Bagaimana untuk menggunakan Ajax untuk memuat naik data dan fail pada masa yang sama?
P粉012875927
P粉012875927 2023-08-20 14:33:32
0
2
359

Saya menggunakan jQuery dan Ajax untuk menyerahkan data dan fail, tetapi saya tidak pasti cara menghantar kedua-dua data dan fail dalam satu bentuk?

Saya pada masa ini menggunakan kedua-dua kaedah dengan cara yang hampir sama, tetapi cara mengumpul data ke dalam tatasusunan adalah berbeza, data menggunakan .serialize(); dan fail menggunakan ;= new FormData($(this)[0]);

Adakah mungkin untuk menggabungkan kedua-dua kaedah ini untuk memuat naik fail dan data dalam satu bentuk melalui Ajax?

Data jQuery, Ajax dan html

$("form#data").submit(function(){ var formData = $(this).serialize(); $.ajax({ url: window.location.pathname, jenis: 'POST', data: formData, async: palsu, kejayaan: fungsi (data) { makluman(data) }, cache: palsu, Jenis kandungan: palsu, processData: palsu }); kembali palsu; }); 
Serah

JQuery Dokumentasi, Ajax dan html

$("form#files").submit(function(){ var formData = new FormData($(this)[0]); $.ajax({ url: window.location.pathname, jenis: 'POST', data: formData, async: palsu, kejayaan: fungsi (data) { makluman(data) }, cache: palsu, Jenis kandungan: palsu, processData: palsu }); kembali palsu; }); 
Serah

Bagaimanakah saya boleh menggabungkan perkara di atas supaya saya boleh menghantar data dan fail dalam satu bentuk melalui Ajax?

Matlamat saya adalah untuk dapat menghantar semua borang ini bersama-sama melalui Ajax, adakah ini mungkin?

提交


P粉012875927
P粉012875927

membalas semua (2)
P粉794177659

Pilihan lain ialah menggunakan iframe dan tetapkan sasaran borang padanya.

Anda boleh mencuba ini (ia menggunakan jQuery):

function ajax_form($form, on_complete) { var iframe; if (!$form.attr('target')) { //为表单创建一个唯一的iframe iframe = $("").attr('name', 'ajax_form_' + Math.floor(Math.random() * 999999)).hide().appendTo($('body')); $form.attr('target', iframe.attr('name')); } if (on_complete) { iframe = iframe || $('iframe[name="' + $form.attr('target') + '"]'); iframe.load(function () { //获取服务器响应 var response = iframe.contents().find('body').text(); on_complete(response); }); } }

Ia berfungsi dalam semua penyemak imbas dan anda tidak perlu membuat siri atau menyediakan data. Satu kelemahan ialah anda tidak boleh memantau kemajuan.

Selain itu, sekurang-kurangnya untuk Chrome, permintaan itu tidak muncul di bawah tab "xhr" dalam alat pembangun, tetapi di bawah "doc".

    P粉064448449

    Masalah yang saya hadapi ialah menggunakan pengecam jQuery yang salah.

    Anda boleh menggunakan borangmenggunakan ajaxuntuk memuat naik data dan fail.

    PHP + HTML

     

    jQuery + Ajax

    $("form#data").submit(function(e) { e.preventDefault(); var formData = new FormData(this); $.ajax({ url: window.location.pathname, type: 'POST', data: formData, success: function (data) { alert(data) }, cache: false, contentType: false, processData: false }); });

    Versi ringkas

    $("form#data").submit(function(e) { e.preventDefault(); var formData = new FormData(this); $.post($(this).attr("action"), formData, function(data) { alert(data); }); });
      Muat turun terkini
      Lagi>
      kesan web
      Kod sumber laman web
      Bahan laman web
      Templat hujung hadapan
      Tentang kita Penafian Sitemap
      Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!