Отправлять форму несколько раз с помощью javascript для загрузки нескольких файлов?

#javascript #iframe #download

#javascript #iframe #Скачать

Вопрос:

Привет, ребята, вот такая ситуация:

У меня есть URL, который принимает два параметра и возвращает файл PDF. Я также могу опубликовать форму с двумя входными значениями по этому URL вместо этого.

На другой странице я хочу запустить javascript, который будет отправлять различные комбинации параметров на URL-адрес с помощью GET или POST и возвращать каждый из файлов, связанных с комбинациями параметров.

Основываясь на другом скрипте, который я нашел здесь, я адаптировал его и попробовал этот (анонимный URL):

 var first = '503113571';
var second = '2046486463';
var url = 'https://www.domain.com/page';

el = document.createElement( 'div' );
el.setAttribute( "id", "targetdiv" );
document.body.appendChild( el );

function download(first, second)
{
    var htm = '<iframe src="'   url   '?a='   first   'amp;b='   second   '"></iframe>';
    document.getElementById('targetdiv').innerHTML = htm;
}

download(first, second);
  

Iframe создается в div, и его атрибут src правильный — если я скопирую и вставлю атрибут src в новое окно, файл загрузится нормально. По какой-то причине, когда этот URL используется в iframe, файл никогда не загружается.

Я использую GreaseMonkey для запуска скрипта на странице, поскольку у нас нет доступа для изменения самих веб-страниц. Скрипт выполняется нормально (поскольку выполняется весь код, iframe создается правильно).

Используя сетевую панель FireBug, после загрузки страницы я не вижу никаких запросов к iframe src.

Есть идеи либо о причине, либо о том, какие шаги я мог бы предпринять, чтобы разобраться в этом? Спасибо!

Комментарии:

1. Какой браузер вы используете? Кажется, это работает для меня в Chrome (за исключением некоторых ошибок в именах переменных в download функции и неправильного ] в последней строке)

2. Извините, я исправил переменные. Они верны в моем скрипте, но я отредактировал имена переменных (плохо) для анонимности моего клиента. Я использую Firefox 3.6.

Ответ №1:

Несколько вещей:

  1. Таким образом вы можете выполнить только запрос GET, и вы не используете аргументы, которые вы передали в функцию загрузки.
  2. Обычно я вставляю код в консоль Firebug, чтобы что-то протестировать.
  3. Вы должны иметь возможность просто установить window.местоположение для загрузки файла.

     var first = '503113571';
    var second = '2046486463';
    var url = 'https://www.domain.com/page';
    
    function download(a, b) {
        window.location = url   '?a='   a   'amp;b='   b;
    }
    
    download(first, second);
      
  4. Если вы хотите использовать iframe, это должно работать без риска перехода на другую страницу:

     function download(a, b) {
        var newIFrame = document.createElement("iframe");
        newIFrame.src = url   '?a='   a   'amp;b='   b;
        newIFrame.style.display = 'none';
        document.body.appendChild(newIFrame);
    }
      

Комментарии:

1. Re: ваше первое замечание, я исправил опечатки — извините за это. Я попробую ваши предложения и сообщу об этом. Спасибо!