Проблема использования скрытого входного значения в качестве параметра в функции готовности документа Javascript - PullRequest
0 голосов
/ 19 января 2011

Я интегрирую загрузчик AJAX http://valums.com/ajax-upload/ в свое приложение. По умолчанию сценарий выгружает загруженный файл в один предписанный каталог. Я изменил его так, что он получает параметры: имена двух папок - год и месяц, так что это может быть, например. uploads / 2010 / May /, а не uploads /, но все равно выдает файлы в папку uploads, если я не укажу имена двух папок в виде строк.

Код ниже находится внутри моей функции $ (document) .ready.

var uploader = new qq.FileUploader({
    element: document.getElementById('uploadfile'),
    action: 'ajax/uploader.php',
    allowedExtensions: ["xls"],
    params: {
        f: '2010',//document.getElementById('fileyear').value,
        g: 'May'//document.getElementById('filemonth').value
    }       
});

Как видно выше, я прокомментировал фактические строки и скорее использовал фиктивные значения для проверки [и так работает нормально].

Я попытался использовать f: $ (# fileyear) .val (), g: $ (# filemonth) .val (), и это не сработало, поэтому мне пришлось по умолчанию использовать document.getElementById, как указано выше. ВНЕ переменной загрузки, два значения верны.

Другая функция сохраняет дату в этих скрытых входных данных, и я изменил их на обычные текстовые входы, просто чтобы быть уверенным, что они сохранены правильно.

Я предполагаю, что проблема здесь может заключаться просто в том, что загрузчик может захватить (пустые) значения до того, как они были созданы? Или это связано с загрузкой? Или что-то не так с моим готовым документом? Пожалуйста, мне действительно нужна помощь с этим - ломаю голову над этим весь день. Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 19 января 2011

Значения, которые вы получите для document.getElementByID('fileyear').value и т. Д., Будут значениями сразу после загрузки DOM, а не теми, на которые вы впоследствии измените его, введя в форму.Опции f "и" g "в функции, которые вызываются загрузчиком для получения этих значений.Таким образом, вы получите значения во время вызова, а не их начальные значения (пусто?).

0 голосов
/ 19 января 2011
var uploader = new qq.FileUploader({
    element: document.getElementById('uploadfile'),
    action: 'ajax/uploader.php',
    allowedExtensions: ["xls"] 
});

$('your_button_id').click(function(){
    uploader.setParams({
        f: document.getElementById('fileyear').value,
        g: document.getElementById('filemonth').value
    });
});  

или

var uploader = new qq.FileUploader({
    element: document.getElementById('uploadfile'),
    action: 'ajax/uploader.php',
    allowedExtensions: ["xls"],
    params: {
        f: (document.getElementById('fileyear')) ? document.getElementById('fileyear').value : 2010,
        g: (document.getElementById('filemonth')) ? document.getElementById('filemonth').value : 'May'
    }       
}); 
...