Почему мой загрузчик файлов ajax не работает правильно? - PullRequest
0 голосов
/ 26 января 2011

Я пытаюсь создать модуль загрузки файлов ajax.Пожалуйста, посмотрите на следующий фрагмент кода:

//create the form for uploading the file the ajax file
FileUploader.prototype.createForm = function() {
    // create the new form
    var form = document.createElement('form');
    form.id = this.form_id;
    form.action = this.url;
    form.method = 'post';
    form.enctype = 'multipart/form-data';
    form.target = 'file_upload_iframe';

    // try to create a file type of input failed at [1]
    /* var input_file = document.createElement('input');
    input_file.type = 'file';
    input_file.name = this.name;
    input_file.value = this.file;  [1] */

    // try to clone the input file but failed to insert it to the old form[2] 
    // or the new form [3] either
    var input_file = document.getElementById('userfile');
    var new_input_file = document.cloneNode(true);
    // document.getElementById('file_upload').appendChild(new_input_file); [2]
    new_input_file.id = ''; 

    form.appendChild(new_input_file); // [3]
    document.body.appendChild(form);
    return form;
};
  1. Почему в месте [1] у меня появляется ошибка безопасности Security error" code: "1000, не могли бы вы указать источник ссылки?

  2. Почему я не мог добавить файл new_input_file в новую созданную форму [3] или даже добавить новый клонированный файл new_input_file в старую форму ([2])?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 26 января 2011

Вы пытались клонировать весь документ, в этом нет особого смысла.Вам нужен такой код:

var new_input_file = input_file.cloneNode(true);

В любом случае, value файла типа ввода читается только по очевидным причинам безопасности, поэтому единственный способ «преодолеть» это - добавить фактический ввод к новомуФорма:

form.appendChild(input_file);

И файл должен быть сохранен.(Не проверял)

0 голосов
/ 26 января 2011

Разве вы не можете использовать jquery для управления DOM?

var input = $('<input>'); // create your element
input.append($('#userfile').clone()); // append something
...