Отправка данных формы во всплывающее окно для обработки - PullRequest
0 голосов
/ 02 июля 2018

Как много постов начинаются: это может быть дубликат, но ...

Вот что я пытаюсь сделать:

  1. У меня есть HTML-страница на моем сайте, которая содержит элемент FORM с различными элементами ввода и т. Д., Например ,::1006*

    <form id="form1" method="post" action="">
    Name: <input type="text" id="text1" size=10><br>
    <input type="hidden" id="hidden1" value="This text is hidden">
    <input type="checkbox" id="checkbox1" value="Y"> Include stuff?<br>
    Job Title: <select name="select1" id="select1">
    <option value="1">President</option>
    <option value="2">Chief Cook</option>
    <option value="3">Bottle Washer</option>
    </select>
    <button name="button1" id="button1" onclick="doThisScript()">Submit Stuff</button>
    </form>
  1. Я хочу, чтобы функция doThisScript открывала новое всплывающее окно с закодированными параметрами, направленными на URL-адрес нашего сайта, и передавала значения формы этому URL-адресу, что-то вроде:

    function doThisScript() {
    var form1=document.getElementById('form1');
    form1.onsubmit=function() {
    var w=window.open('resultsprogram.asp','resultswin','toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=400,height=300');
    this.target = 'resultswin';
    form1.submit();
    }
    }

Этот код (на основе ближайшего Q / A, который я смог найти) передает форму из «базовой» страницы во всплывающее окно. Но то, что я пытаюсь сделать, я полагаю, это отправить форму обратно на сервер, но результаты возвращаются в это всплывающее окно вместо базовой страницы или новой вкладки / стандартного окна браузера.

Это вообще возможно? Я предположил, что должен быть способ создать popupwin с URL-адресом, передать этой странице текущие значения формы и сказать, что popupwin сам по себе отправляет форму, чтобы она, а не базовая страница, получала результаты. Выполнимо?

1 Ответ

0 голосов
/ 02 июля 2018

Вызов window.open() вызовет серверный скрипт, но не отправит ему параметры формы.

Вам нужно изменить действие формы, чтобы оно стало серверным скриптом:

function doThisScript() {
    var form1=document.getElementById('form1');
    form1.action = 'resultprogram.asp';
    form1.target = 'resultswin';
    }
}

Вам не нужно вызывать submit() в явном виде, поскольку это действие по умолчанию - нажатие кнопки отправки.

...