dynamic创build并提交表单
jQuery中有一种方法可以即时创build和提交表单。
像下面的东西。
<html> <head> <title> Title Text Goes Here </title> <script src="jquery-1.7.js"></script> <script> $(document).ready(function(){alert('hi')}); $('<form/>').attr('action','form2.html').submit(); </script> </head> <body> Content Area </body> </html>
这是应该工作还是有不同的方式来做到这一点?
你的代码有两个错误。 第一个是你包含$(document).ready();
但没有包装与它创build元素的jQuery对象。
第二个是你正在使用的方法。 当select器(或者你通常把select器放在哪里)被replace为你想创build的元素时,jQuery将创build任何元素。 然后,您只需将其附加到正文并提交。
$(document).ready(function(){ $('<form action="form2.html"></form>').appendTo('body').submit(); });
这是在行动的代码。 在这个例子中,它不会自动提交,只是为了certificate它会添加表单元素。
这是自动提交的代码。 它工作得很好。 Jsfiddle带你到404页面,因为“form2.html”显然不存在于它的服务器上。
对的,这是可能的。 其中一个解决scheme是( jsfiddle作为certificate )。
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(); });
上面的例子展示了如何创build表单,如何添加input以及如何提交。 有时X-Frame-Options
会禁止显示结果,所以我将target
设置为_top
,它replace了主窗口的内容。 或者,如果您设置_blank
,它可以显示在新窗口/选项卡。
像Purmou一样,但在提交时删除表单将会完成。
$(function() { $('<form action="form2.html"></form>').appendTo('body').submit().remove(); });
是的,你只是忘了报价…
$('<form/>').attr('action','form2.html').submit();
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();
其我的版本没有jQuery,简单的function可以在飞行中使用
function:
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');
试用这个代码它是全面的解决scheme
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();
你为什么不直接购买$.post
或$.get
?
GET
请求:
$.get(url, data, callback);
POST
请求:
$.post(url, data, callback);
那么你不需要一个表单,只需要在你的数据对象中发送数据。
$.post("form2.html", {myField: "some value"}, function(){ alert("done!"); });