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!"); });