Динамическое создание и отправка формы
есть ли способ в jQuery, чтобы создать и отправить форму на лету.
что-то вроде ниже.
<html>
<head>
<title> Title Text Goes Here </title>
<script src="http://code.jquery.com/jquery-1.7.js"></script>
<script>
$(document).ready(function(){alert('hi')});
$('<form/>').attr('action','form2.html').submit();
</script>
</head>
<body>
Content Area
</body>
</html>
это должно работать, или есть другой способ сделать это?
8 ответов:
есть две вещи неправильно с вашим кодом. Первый заключается в том, что вы включили
$(document).ready();но не обернул объект jQuery, который создает элемент с ним.второй был метод, который вы используете. jQuery создаст любой элемент, когда селектор (или где вы обычно помещаете селектор) будет заменен элементом, который вы хотите создать. Затем вы просто добавляете его к телу и отправляете его.
$(document).ready(function(){ $('<form action="form2.html"></form>').appendTo('body').submit(); });здесь код в действии. В этом примере он не отправляет автоматически, просто чтобы доказать, что он добавит элемент формы.
здесь код с автоматической отправки. Это прекрасно работает. Jsfiddle приведет вас на страницу 404, потому что " form2.html " не существует на своем сервере, очевидно.
Да, это возможно. Одно из решений приведено ниже (jsfiddle как доказательство).
HTML:
<a id="fire" href="#" title="submit form">Submit form</a>(см, выше нет формы)
JavaScript:
jQuery('#fire').click(function(event){ event.preventDefault(); var newForm = jQuery('<form>', { 'action': 'http://www.google.com/search', 'target': '_top' }).append(jQuery('<input>', { 'name': 'q', 'value': 'stack overflow', 'type': 'hidden' })); newForm.submit(); });в приведенном выше примере показано, как создать форму, как добавить входные данные и как отправить. Иногда отображение результата запрещено
X-Frame-Options, поэтому я установилtargetдо_top, который заменяет содержимое главного окна. В качестве альтернативы, если вы установите_blank, это может показать в новом окне / вкладке.
его моя версия без jQuery, простая функция может быть использована на лету
функция:
function post_to_url(path, params, method) { method = method || "post"; var form = document.createElement("form"); form.setAttribute("method", method); form.setAttribute("action", path); for(var key in params) { if(params.hasOwnProperty(key)) { var hiddenField = document.createElement("input"); hiddenField.setAttribute("type", "hidden"); hiddenField.setAttribute("name", key); hiddenField.setAttribute("value", params[key]); form.appendChild(hiddenField); } } document.body.appendChild(form); form.submit(); }использование:
post_to_url('fullurlpath', { field1:'value1', field2:'value2' }, 'post');
Как Purmou, но удаление формы, когда отправить будет сделано.
$(function() { $('<form action="form2.html"></form>').appendTo('body').submit().remove(); });
пример Josepmra хорошо работает для того, что мне нужно. Но мне пришлось добавить строку
form.appendTo( document.body )чтобы он работал.
var form = $(document.createElement('form')); $(form).attr("action", "reserves.php"); $(form).attr("method", "POST"); var input = $("<input>") .attr("type", "hidden") .attr("name", "mydata") .val("bla" ); $(form).append($(input)); form.appendTo( document.body ) $(form).submit();
попробуйте с этим кодом Это полностью динамическое решение
var form = $(document.createElement('form')); $(form).attr("action", "reserves.php"); $(form).attr("method", "POST"); var input = $("<input>").attr("type", "hidden").attr("name", "mydata").val("bla"); $(form).append($(input)); $(form).submit();
Comments