Отправить форму несколько раз, используя JavaScript для загрузки нескольких файлов? - PullRequest
1 голос
/ 30 апреля 2011

Эй, ребята, вот ситуация:

У меня есть 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 + '&b=' + second + '"></iframe>';
    document.getElementById('targetdiv').innerHTML = htm;
}

download(first, second);

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

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

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

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

1 Ответ

1 голос
/ 01 мая 2011

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

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

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

    function download(a, b) {
        var newIFrame = document.createElement("iframe");
        newIFrame.src = url + '?a=' + a + '&b=' + b;
        newIFrame.style.display = 'none';
        document.body.appendChild(newIFrame);
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...