Pertanyaan Upload File jQuery Tidak dapat memanggil metode '_adjustMaxNumberOfFiles' tidak terdefinisi


Saya sedang mengimplementasikan Upload File jQuery plugin di aplikasi Rails 3.2 dan saya mendapatkan pesan kesalahan ini:

Uncaught TypeError: Cannot call method '_adjustMaxNumberOfFiles' of undefined

Berikut adalah kode yang memanggil _adjustMaxNumberOfFiles:

$(function () {
    // Initialize the jQuery File Upload widget:
    $('#fileupload').fileupload(
      {
        url: '/photos', // post to and retrieve from
        dataType: 'json'
      }
    );

    // Load existing files:
    $.getJSON($('#fileupload').prop('action'), function (files) {
      var fu = $('#fileupload').data('fileupload'), 
          files = jQuery.grep(files, function (a) { return a.gallery_id == <%= params[:id] %>; }), //filter the photos down to this gallery
          template;


      fu._adjustMaxNumberOfFiles(-files.length);
      template = fu._renderDownload(files).appendTo($('#fileupload .files'));

      // Force reflow:
      fu._reflow = fu._transition && template.length && template[0].offsetWidth;
      template.addClass('in');
      $('#loading').remove();
    });

  });

Ini benar-benar berhasil. Saya telah pindah untuk bekerja pada sisa aplikasi dan ketika saya ditempatkan ke lingkungan pementasan saya melihat saya mendapatkan kesalahan di atas. Saya kembali ke dev untuk melihat apakah itu terjadi di sana dan benar saja. Saya menggunakan permata jquery-fileupload-rails untuk memuat file yang diperlukan ke dalam pipeline aset. Saya sudah mencoba untuk tidak menggunakan permata dan memuat semua aset secara manual dan itu tidak membantu.

Saya mencoba untuk melangkah melalui ini di konsol, pengaturan fu dan fu._adjustMaxNumberOfFiles, dan masih mendapatkan pesan kesalahan Cannot call method '_adjustMaxNumberOfFiles' of undefined. Jika saya mengomentari baris dengan _adjustMaxNumberOfFiles saya mendapatkan kesalahan yang sama pada baris berikutnya, bukannya memberi tahu saya _renderDownload tidak terdefinisi. Seolah-olah saya tidak dapat mengakses salah satu metode yang ditetapkan dalam plugin jquery-file-upload, bahkan berpikir semua skrip telah dimuat. Berikut adalah skrip yang dimuat, sesuai urutan. Saya telah mengecualikan file js yang tidak berlaku di sini.

<script src="/assets/jquery.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery-fileupload/vendor/jquery.ui.widget.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery-fileupload/vendor/load-image.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery-fileupload/vendor/canvas-to-blob.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery-fileupload/vendor/tmpl.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery-fileupload/jquery.iframe-transport.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery-fileupload/jquery.fileupload.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery-fileupload/jquery.fileupload-fp.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery-fileupload/jquery.fileupload-ui.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery-fileupload/locale.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery-fileupload/index.js?body=1" type="text/javascript"></script>

Saya mengalami waktu yang sangat sulit untuk mengetahui hal ini. Bantuan apa pun akan dihargai. Saya dapat memposting lebih banyak cuplikan kode jika perlu, tetapi yang saya posting adalah satu-satunya JavaScript yang bukan bagian dari plugin Upload File jQuery.


5
2018-03-07 15:43


asal


Jawaban:


Format kembali json telah diubah oleh permata dan tidak didokumentasikan di mana saja.

Anda dapat melihat masalah ini yang terkait dengan kesalahan yang sama: https://github.com/tors/jquery-fileupload-rails/issues/30


1
2018-03-07 18:44



Di uploads_controller buat aksi:

format.json { render json: {files: [@upload.to_jq_upload]}, status: :created, location: @upload }

Di js Anda:

var fu = $('#fileupload').data('blueimpFileupload');

5
2018-04-02 23:44