Методом window.open я открываю новый сайт с параметрами, которые мне нужно передать методом post. Я нашел решение, но, к сожалению, оно не работает. Это мой код:
<script type="text/javascript">
function openWindowWithPost(url,name,keys,values)
{
var newWindow = window.open(url, name);
if (!newWindow) return false;
var html = "";
html += "<html><head></head><body><form id='formid' method='post' action='" + url +"'>";
if (keys && values && (keys.length == values.length))
for (var i=0; i < keys.length; i++)
html += "<input type='hidden' name='" + keys[i] + "' value='" + values[i] + "'/>";
html += "</form><script type='text/javascript'>document.getElementById(\"formid\").submit()</sc"+"ript></body></html>";
newWindow.document.write(html);
return newWindow;
}
</script>
Далее создаю массивы:
<script type="text/javascript">
var values= new Array("value1", "value2", "value3")
var keys= new Array("a","b","c")
</script>
И вызовите функцию:
<input id="Button1" type="button" value="Pass values" onclick="openWindowWithPost('test.asp','',keys,values)" />
Но когда я нажимаю на эту кнопку, сайт test.asp пуст (конечно, я пытаюсь получить значения прохода - Request.Form("b")
).
Как я могу решить эту проблему, почему я не могу получить значения прохода?
javascript
luk4443
источник
источник
Ответы:
Вместо того, чтобы писать форму в новом окне (что сложно исправить с помощью кодирования значений в HTML-коде), просто откройте пустое окно и опубликуйте в нем форму.
Пример:
Редактировать:
Чтобы установить значения в форме динамически, вы можете сделать следующее:
Чтобы опубликовать форму, вы вызываете функцию со значениями, например
openWindowWithPost('a','b','c');
.Примечание. Я изменил имена параметров по отношению к именам форм, чтобы показать, что они не обязательно должны быть одинаковыми. Обычно вы сохраняете их похожими друг на друга, чтобы упростить отслеживание значений.
источник
action
свойство формы.target="_blank"
?_blank
.Поскольку вам нужна вся форма внутри javascript, вместо того, чтобы записывать ее в тегах, вы можете сделать это:
источник
Несмотря на то, что я опаздываю на 3 года, но для упрощения примера Гуффа вам даже не нужно иметь форму на странице вообще:
Отредактировано:
Может быть, полезный совет для кого-то :)
источник
$("body").append(form);
ничего не получится.remove()
после предложения Джонатана.appendTo('body').submit()
, вы даже очистите себя и не загромождаете текущую страницу объектами формы.Я полностью согласен с ответом наемника , опубликованным выше, и создал эту функцию для меня, которая работает для меня. Это не ответ, это комментарий наемника к публикации выше.
источник
Вы можете просто использовать
target="_blank"
в форме.Добавьте скрытые поля так, как вы предпочитаете, а затем просто отправьте форму с помощью JS.
источник
window.open
он будет заблокирован как всплывающее окно, если он не вызывается внутриclick
обработчика (или любого подобного события,Я создал функцию для создания формы на основе URL-адреса, цели и объекта в качестве метода
POST
/GET
data и submit. Он поддерживает вложенные и смешанные типы внутри этого объекта, поэтому он может полностью реплицировать любую структуру, которую вы ему скармливаете: PHP автоматически анализирует ее и возвращает как вложенный массив. Однако есть одно ограничение: скобки[
и]
не должны быть частью какого-либо ключа в объекте (например,{"this [key] is problematic" : "hello world"}
). Если кто-то знает, как от него избавиться, скажите, пожалуйста!Без лишних слов, вот источник:
Показать фрагмент кода
Пример использования:
источник
Я нашел лучший способ передать параметры во всплывающее окно и даже получить из него параметры:
На главной странице:
Во всплывающем окне:
Это оно !
И это очень удобно, потому что:
Радоваться, веселиться!
источник
window.opener
поддерживается не всеми браузерами.Я хотел сделать это в React, используя простой Js и полифил fetch . OP не сказал, что он специально хотел создать форму и вызвать на ней метод отправки, поэтому я сделал это, разместив значения формы как json:
источник
Действие отправки по умолчанию - Ext.form.action.Submit, которое использует запрос Ajax для отправки значений формы на настроенный URL. Чтобы включить обычную отправку в браузере формы Ext, используйте параметр конфигурации standardSubmit.
Ссылка: http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.form.Basic-cfg-standardSubmit
решение: поместите standardSubmit: true в свой config. Надеюсь, это вам поможет :)
источник
Я использовал это в прошлом, так как мы обычно используем синтаксис бритвы для кодирования
{
// добавляем здесь скрытые и заполненные формы
}
источник