Saya memiliki hal-hal aneh dengan pengiriman formulir Jquery.

Setelah unggahan selesai, halaman tersebut memuat ulang bahkan di server belum selesai diproses.

Server baru saja mengembalikan status sukses json, jadi itu bukan di sisi server.

Berikut kodenya:

$form.on('submit', function (e) {

        console.log('Submit form ' + fileNumber);
        if ($form.hasClass('is-uploading')) return false;

        $form.addClass('is-uploading').removeClass('is-error');

        if (isAdvancedUpload) {
            e.preventDefault();
            e.stopPropagation();
            var ajaxData = new FormData($form.get(0));

            var $input = $form.find('input[type="file"]');


            if (fileToUpload) { ajaxData.append($input.attr('name'), fileToUpload); }
            console.log('FileTo Upload: ' + fileToUpload);

            $.ajax({
                url: $form.attr('action'),
                type: $form.attr('method'),
                data: ajaxData,
                dataType: 'json',
                xhr: function () {
                    var myXhr = $.ajaxSettings.xhr();
                    if (myXhr.upload) {
                        myXhr.upload.addEventListener('progress', progress, false);
                    }
                    return myXhr;
                },
                cache: false,
                contentType: false,
                processData: false,
                beforeSend: function (xhr,settings) {

                },
                complete: function (xhr, status) {
                    xhr.
                    //$form.removeClass('is-uploading');
                    //fileNumber++;
                    //fileToUpload = droppedFiles[fileNumber];
                    //if (fileToUpload) { $form.submit(); }
                },
                success: function (data,status,xhr) {
                    //$form.addClass(data.success === true ? 'is-success' : 'is-error');
                    //if (!data.success) $errorMsg.text(data.error);
                },
                error: function (xhr,status,error) {
                }
            });

        } else {
            // ajax for legacy browsers
        }
    });

Masalahnya ada di sini:

   xhr: function () {
                    var myXhr = $.ajaxSettings.xhr();
                    if (myXhr.upload) {
                        myXhr.upload.addEventListener('progress', progress, false);
                    }
                    return myXhr;

Jika saya menghapus kembali myXhr Halaman tidak dimuat ulang setelah diunggah, tetapi saya tidak memiliki laporan kemajuan.

Saya tidak tahu apa yang harus dilakukan untuk mencegah memuat ulang.

Terima kasih.

1
Julien 10 Agustus 2017, 09:41

2 jawaban

Jawaban Terbaik

Saya menemukan masalahnya.

Tidak ada kekhawatiran dengan objek xhr.

Masalahnya berasal dari Tautan Browser Visual Studio.

Setelah mematikannya, semuanya bekerja dengan sempurna.

Tautan browser, karena alasan yang jelas adalah menjalankan pemuatan ulang halaman.

Akan melihat dengan tim Inti ASP.NET

1
Julien 10 Agustus 2017, 21:31

Coba ubah jenis tombol kirim ke tombol dan terapkan fungsi klik

Misalnya:

$( "#buttonID" ).click(function() {
  //your code
});
0
Prabhath Withanage 10 Agustus 2017, 06:50