天道酬勤,学无止境

Is there a way to submit a “fake” form using jQuery?

What I want to do is make a POST request with arbitrary params, much like submitting a form. That is not merely doing the XHR. What I ideally want is to emulate a submit (like submiting a form, not POSTiing and then redirecting). I want to avoid the latency of $.post + window.top.location = blah

The most direct way would be to have a 'fake' form and insert a bunch of elements, then serialize and use jQuery.submit(), something like Is there a way using jQuery to submit a form without the elaborate field by field breakdown?

I wish there were a more elegant way.

My use case is that I am gathering a bunch of random fields through external API calls (from Facebook and other services) and want to submit ALL that info at once to user creation, as if the user filled out all this information and pressed 'submit'

Any suggestions? Thanks!

评论

yes

you can use $.ajax (example)

or $.post and $.get ... example:

$.post(
          "url_to_page",
          /* string like this: "text=me%20man&mail=peace@man.com or an object": */
          {text: "me man", mail: "peace@man.com"}
      )
      /* you can check if the request was submitted successfully */
      .success(function(data) {
          alert("Success!");
          alert(data); //data on page
      })
      /* you can check if the request failed */
      .error(function() {
          alert("Error!");
      });

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 如何通过JavaScript禁用Chrome的已保存密码提示设置(How to disable Chrome's saved password prompt setting through JavaScript)
    问题 有什么方法可以借助JavaScript或jQuery来操纵Chrome设置吗? 我想使用JavaScript禁用“保存密码”弹出气泡。 这该怎么做? 回答1 现在我要回答我自己的问题。 既可以在chrome中也可以在mozilla fire fox中完成。 对于Chrome 首先,您必须删除输入类型的属性“ password”。 这背后的主要原因是当您使用输入类型=“文本”和输入类型=“密码”时,主要的浏览器会弹出该窗口。 因为浏览器具有内置功能,当您输入type =“ password”时会弹出该弹出窗口。 现在我们可以从中操作chrome。 这是一个例子 <html> <head> <title> Remove Save Password Pop Up For Chrome </title> <style> #txtPassword{ -webkit-text-security:disc; } </style> </head> <body> <input type="text" id="txtUserName" /> <br /> <input type="text" id="txtPassword" /> <br /> </body> </html> 这是css属性,用于将文本更改为项目符号。 对于Mozilla 您无法在mozilla中执行此操作。 因为-moz
  • Chrome忽略autocomplete =“ off”(Chrome ignores autocomplete=“off”)
    问题 我已经创建了一个使用标签箱下拉菜单的Web应用程序。 此功能在Chrome浏览器(版本21.0.1180.89)以外的所有浏览器中均适用。 尽管input字段和form字段都具有autocomplete="off"属性,但Chrome仍坚持显示该字段先前条目的下拉历史记录,这使标记框列表消失了。 回答1 防止自动填写用户名(或电子邮件)和密码: <input type="email" name="email"><!-- Can be type="text" --> <input type="password" name="password" autocomplete="new-password"> 防止自动填写字段(可能不起作用): <input type="text" name="field" autocomplete="nope"> 解释: autocomplete仍然有效上<input>尽管有autocomplete="off" ,但你可以改变off到一个随机字符串,就像nope 。 其他禁用字段自动完成功能的“解决方案” (这不是正确的方法,但可以使用): 1。 HTML: <input type="password" id="some_id" autocomplete="new-password"> JS(加载): (function() { var some_id
  • 停止Google Chrome自动填充输入内容[重复](Stop Google chrome auto fill the input [duplicate])
    问题 这个问题已经在这里有了答案: 禁用Chrome自动填充(68个答案) 3年前关闭。 我有一个input type text供用户在帐户设置页面中更改其电子邮件和密码。 如何停止Chrome自动填充输入。 Chrome会记住登录页面中的input data ,并会自动填写帐户设置页面。 Chrome自动填写input内容,在帐户设置页面中更改我的电子邮件和密码 回答1 您是否将这些值明确设置为空白? 例如: <input type="text" name="textfield" value=""> 那应该停止浏览器将数据放到不应该放的地方。 或者,您可以将autocomplete属性添加到form标签: <form autocomplete="off" ...></form> 回答2 为此,我们不再依赖黑客。 您可以将自动完成设置为新密码,它将按预期工作。 <input type="password" name="pwd" autocomplete="new-password"> https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/input#attr-autocomplete 回答3 解决方案1:在<form ..>标记下放置两行代码即可解决问题。 <form id="form1" runat="server"
  • jQuery validate rule ONLY AT SUBMIT
    Say i have a form that looks up city, state locations. if the user enters an incorrect city, state, i want the form to be able to check the database against the users input, and see if the input is valid or not. If it is not, i want the user to be prompt. So form Validate is the plugin for me. $("#form").validate({ rules: { citystate: { required: true, myCustomAjaxSyncronousCheckAgainstDBRule: true } submitHandler: function(form) { if ($("#form").valid()) { form.submit(); } } }); Now say this form has to be used in 4 different places in my website, so it would suck to refactor out the
  • IE在提交时清除输入[type =“ file”](IE clears input[type=“file”] on submit)
    问题 我有一个页面(演示): <!DOCTYPE html> <html> <head> <title></title> <script type="text/javascript" src="http://codeorigin.jquery.com/jquery-1.10.2.min.js"></script> <script type="text/javascript"> $(function() { $("#id_button").click(function(e) { $("#id_file").click(); }); }); </script> </head> <body> <form method="post" enctype="multipart/form-data" action="http://www.google.com/"> <input type="file" name="file" id="id_file" /> <input type="button" id="id_button" value="fake button" /> <input type="submit"> </form> </body> </html> 如果我通过单击“假按钮”打开浏览对话框,选择文件(我在input[type="file"]看到它),则比单击“提交”按钮且没有任何发布
  • Javascript: Uploading a file… without a file(Javascript: Uploading a file… without a file)
    问题 我试图在不实际使用用户输入文件的情况下伪造文件上传。 文件的内容将从字符串动态生成。 这可能吗? 以前有人做过吗? 是否有可用的示例/理论? 澄清一下,我知道如何使用隐藏的iframe和朋友使用AJAX技术上传文件-问题是上传的文件不在表格中。 我正在使用ExtJS,但是jQuery也是可行的,因为ExtJS可以插入其中(ext-jquery-base)。 回答1 为什么不将XMLHttpRequest()与POST一起使用? function beginQuoteFileUnquoteUpload(data) { var xhr = new XMLHttpRequest(); xhr.open("POST", "http://www.mysite.com/myuploadhandler.php", true); xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr.onreadystatechange = function () { if (xhr.readyState == 4 && xhr.status == 200) alert("File uploaded!"); } xhr.send("filedata="+encodeURIComponent(data));
  • 使用外部的按钮提交表单标签(Submit form using a button outside the <form> tag)
    问题 说我有: <form method="get" action="something.php"> <input type="text" name="name" /> </form> <input type="submit" /> 我该如何使用表单外部的“提交”按钮提交该表单,我认为在HTML5中有一个提交的action属性,但是我不确定那是否是完全跨浏览器的,如果不是这样的话,做这个? 回答1 更新:在现代浏览器中,您可以使用form属性来执行此操作。 据我所知,如果没有javascript,您将无法做到这一点。 规格说明如下 用于创建控件的元素通常出现在FORM元素内部,但当它们用于构建用户界面时也可能出现在FORM元素声明之外。 有关内在事件的部分对此进行了讨论。 请注意,表单外部的控件不能成为成功的控件。 那是我的大胆 submit按钮被视为控件。 http://www.w3.org/TR/html4/interact/forms.html#h-17.2.1 从评论 我有一个带有多个选项卡的设置区域,其中有一个按钮可以更新所有内容,由于其设计原因,该按钮将位于表单外部。 为什么不将input放置在表单内,而是使用CSS将其放置在页面上的其他位置? 回答2 在HTML5中,有form属性。 基本上 <form id="myform" method="get" action=
  • jQuery提交,我怎么知道按下了什么提交按钮?(jQuery submit, how can I know what submit button was pressed?)
    问题 我正在使用ajaxSubmit插件发送Ajax表单,但是由于某种原因,该插件不发送input[type=image]的名称/值。 因此,现在我在ajaxSubmit处理该表单之前捕获了Submit事件,我需要知道是否有可能找出按下了哪个按钮? 回答1 $("input .button-example").click(function(){ //do something with $(this) var }); PS:您是否有jQuery控制$ var? 否则,您必须这样做: jQuery.noConflict(); jQuery(document).ready(function(){ jQuery("input .button-example").click(function(){ //do something with jQuery(this) var alert(jQuery(this)); }); }); 如果您无法控制事件(提交表单) $(document).ready(function(){ $("#formid").submit(function() { alert('Handler for .submit() called.'); return false; }); }); 告诉我它是否有效;) 回答2 这将捕获启动提交的任何输入元素: $(document)
  • 禁用Chrome自动填充(Disabling Chrome Autofill)
    问题 这个问题的答案是社区的努力。 编辑现有答案以改善此职位。 它目前不接受新的答案或互动。 我一直在遇到几种形式的chrome自动填充行为问题。 表单中的所有字段都具有非常通用和准确的名称,例如“电子邮件”,“名称”或“密码”,并且还设置了autocomplete="off" 。 自动完成标记已成功禁用了自动完成行为,该行为会在您开始键入时出现一个下拉列表,但并未更改Chrome自动将字段填充为的值。 除了chrome不能正确填充输入(例如用电子邮件地址填充电话输入)之外,这种行为是可以的。 客户对此有所抱怨,因此已证实它在多种情况下都在发生,而不是我在计算机上本地完成的操作的某种结果。 我能想到的唯一当前解决方案是动态生成自定义输入名称,然后在后端提取值,但这似乎是解决此问题的一种很怪异的方法。 是否有任何可更改自动填充行为的标记或怪癖可用于解决此问题? 回答1 2021年1月: autocomplete="off"现已按预期工作(已在Chrome 88 macOS上测试)。 2020年9月: autocomplete="chrome-off"禁用Chrome自动填充。 2015年原始答案: 对于新的Chrome版本,您只需在密码字段中输入autocomplete="new-password"就可以了。 我已经检查了,效果很好。 在此讨论中,从Chrome开发人员那里获得了提示
  • 停止提交表单中的输入字段(Stop an input field in a form from being submitted)
    问题 我正在编写一些javascript(lubricmonkey /用户脚本),它将一些输入字段插入网站上的表单中。 问题是,我不希望这些输入字段以任何方式影响表单,我不希望它们在提交表单时提交,我只希望我的JavaScript可以访问它们的值。 有什么办法可以在表单中间添加一些输入字段,而在提交表单时不提交它们呢? 显然,理想的情况是输入字段不在form元素中,但是我希望结果页面的布局使插入的输入字段出现在原始表单的元素之间。 回答1 您可以插入不带“名称”属性的输入字段: <input type="text" id="in-between" /> 或者,您可以在表单提交后(在jQuery )简单地将其删除: $("form").submit(function() { $(this).children('#in-between').remove(); }); 回答2 最简单的方法是插入具有disabled属性的元素。 <input type="hidden" name="not_gonna_submit" disabled="disabled" value="invisible" /> 这样,您仍然可以将它们作为表单的子项访问。 禁用字段具有用户根本无法与之交互的缺点-因此,如果您有disabled文本字段,则用户将无法选择文本。 如果您有一个disabled复选框
  • Qaptcha-有效吗?(Qaptcha - is it effective?)
    问题 在此处查看JQuery Qaptcha的演示-http://www.myjqueryplugins.com/QapTcha/demo 它需要您滑动滑块才能解锁并证明您是人类。 我已经阅读了所有有关如何设置随机字段值并擦除它们的信息,但是通过javascript调用不是全部完成了吗? 如果是这样,那么机器人是否只需要运行javascript方法,然后qaptcha被打破? 帮助我了解这是如何安全的... 回答1 不幸的是,这似乎不是安全的验证码。 这篇文章的结尾是一些可以绕过它的示例代码。 我编写此脚本时没有查看其任何源代码(php或javascript)。 我只是嗅探了几个HTTP请求,看看它在做什么,并试图模拟它。 现在,我查看了他们的JS代码,但仍然没有查看PHP,因此即使没有看到任何源代码,也可以绕过它们。 我可以根据成功和失败快速猜测它的工作方式: 您将表单加载到他们的页面上,将创建一个PHP会话,其中大概没有数据。 将加载一个JS脚本,该脚本生成一个qaptcha_key并将其附加到表单中。 该密钥是由JavaScript创建的,尚未存储在服务器上。 您将滑块向右移动,jQuery通过Ajax将“ qaptcha_key”发布到PHP,然后将密钥存储在会话中(密钥不是秘密)。 您提交了包含qaptcha_key的表单,如果您移动了滑块,该表单以前将通过Ajax发送。
  • 提交后仅禁用提交按钮(Disable submit button ONLY after submit)
    问题 我有以下HTML和jquery: <html dir="ltr" lang="en"> <head> </head> <body> <h2>Test disabling submit button for 1 minute...</h2> <br/> <p style="text-align:center"> <form id="yourFormId" name="yourFormId" method="post" action="#"> <input type="submit" class="submitBtn" value="I Accept"/> </form> </p> <!--script to disable the submit button --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"> </script> <script type="text/javascript"> $(document).ready(function () { $(".submitBtn").click(function () { $(".submitBtn").attr("disabled", true); return true; }); }); </script>
  • 输入类型不是“提交”时的HTML5验证(HTML5 validation when the input type is not “submit”)
    问题 我正在使用HTML5验证字段。 我要在单击按钮时使用JavaScript提交表单。 但是HTML5验证无效。 仅当输入类型为Submit时才起作用。 除了使用JavaScript验证或更改要submit的类型之外,我们还能做其他事情吗? 这是HTML代码: <input type="text" id="example" name="example" value="" required> <button type="button" onclick="submitform()" id="save">Save</button> 我在函数submitform()提交表单。 回答1 HTML5表单验证过程仅限于通过“提交”按钮提交表单的情况。 表单提交算法明确表示,当通过submit()方法submit()表单时,不执行验证。 显然,这个想法是,如果您通过JavaScript提交表单,则应该进行验证。 但是,您可以使用checkValidity()方法针对HTML5属性定义的约束请求(静态)表单验证。 如果你想显示相同的错误消息,因为浏览器将在HTML5表单验证做,恐怕你需要检查所有的限制领域,因为validityMessage属性字段(对照组)的属性,而不是形式。 在单个约束字段的情况下(如所示的情况),这当然是微不足道的: function submitform() { var f
  • 在CSS中向文件上传按钮添加样式(Adding style to file upload button in css)
    问题 我有一个文本字段和带有以下css的按钮: JS小提琴链接:http://jsfiddle.net/Tdkre/ .submit { -moz-box-shadow:inset 0px 1px 0px 0px #cae3fc; -webkit-box-shadow:inset 0px 1px 0px 0px #cae3fc; box-shadow:inset 0px 1px 0px 0px #cae3fc; background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #79bbff), color-stop(1, #4197ee) ); background:-moz-linear-gradient( center top, #79bbff 5%, #4197ee 100% ); filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#79bbff', endColorstr='#4197ee'); background-color:#79bbff; -moz-border-radius:6px; -webkit-border-radius:6px; border-radius:6px; border:1px
  • 使用event.preventDefault()后如何触发事件(How to trigger an event after using event.preventDefault())
    问题 我想举行一个活动,直到我准备将其解雇为止 $('.button').live('click', function(e){ e.preventDefault(); // do lots of stuff e.run() //this proceeds with the normal event } 是否有与上述run()函数等效的功能? 回答1 没有。 一旦事件被取消,它就会被取消。 但是,您可以稍后使用标志来确定您的自定义代码是否已经运行,从而重新触发该事件-诸如此类(请忽略公然的名称空间污染): var lots_of_stuff_already_done = false; $('.button').on('click', function(e) { if (lots_of_stuff_already_done) { lots_of_stuff_already_done = false; // reset flag return; // let the event bubble away } e.preventDefault(); // do lots of stuff lots_of_stuff_already_done = true; // set flag $(this).trigger('click'); }); 一个更通用的变体(具有避免全局名称空间污染的附加好处
  • 提交我的Ajax.BeginForm的其他jQuery事件(Additional jQuery events submitting my Ajax.BeginForm)
    问题 我有一个ASP.Net MVC Ajax.BeginForm,当我单击“提交”按钮时,它可以正确地提交和更新我的页面。 问题是我需要其他事件来执行相同的操作,例如当它们更改输入的文本时。 附加事件确实可以正确提交表单,但是它们规避了Ajax.BeginForm在form标记上生成的onsubmit javascript。 这是Ajax.BeingForm生成的表单标签: <form action="/Store/UpdateCart" method="post" onsubmit="Sys.Mvc.AsyncForm.handleSubmit(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, updateTargetId: 'updatedContent' });"> 这是jQuery,用于绑定我需要通过Ajax提交表单的其他事件: $("#ShippingType, #ViewCart .ddl").bind("change", function() { $("#ViewCartPage form").submit() }); 关于如何获取这些其他事件来触发onsubmit的任何想法,我也一样需要吗? 回答1 决定只使用常规形式,然后使用jQuery
  • AngularJS Chrome自动完成难题(Angularjs Chrome autocomplete dilemma)
    问题 我有一个简单的登录表单,除非您使用Chrome的自动完成功能,否则该表单仅适用于桃子。 如果您开始输入并使用自动完成功能,并且该功能会自动填充您的密码,则我的angularjs模型的密码没有任何值。 我试图通过将属性设置为autocomplete="off"形式来关闭自动完成功能,但这似乎没有任何效果。 我该怎么做:1.如果有人使用Chrome的自动完成功能,请确保我能获得价值? 2.禁用Chrome的自动完成功能? <form class="form-signin" name="form" ng-submit="login()" autocomplete="off"> <h3>Login</h3> <input type="email" name="email" class="form-control" placeholder="Email address" ng-model="user.email" required autofocus> <input type="password" name="password" class="form-control" placeholder="Password" ng-model="user.password" required> <button class="btn btn-lg btn-primary btn-block"
  • IE clears input[type=“file”] on submit
    I have a page (demo): <!DOCTYPE html> <html> <head> <title></title> <script type="text/javascript" src="http://codeorigin.jquery.com/jquery-1.10.2.min.js"></script> <script type="text/javascript"> $(function() { $("#id_button").click(function(e) { $("#id_file").click(); }); }); </script> </head> <body> <form method="post" enctype="multipart/form-data" action="http://www.google.com/"> <input type="file" name="file" id="id_file" /> <input type="button" id="id_button" value="fake button" /> <input type="submit"> </form> </body> </html> if I open browse dialog via clicking "fake button", select
  • 在RVest中没有提交按钮的情况下提交表单(Submit form with no submit button in rvest)
    问题 我正在尝试编写一个搜寻器以下载一些信息,类似于此Stack Overflow帖子。 答案对于创建已填写的表单很有用,但是当提交按钮不属于表单时,我正在努力寻找一种提交表单的方法。 这是一个例子: session <- html_session("www.chase.com") form <- html_form(session)[[3]] filledform <- set_values(form, `user_name` = user_name, `usr_password` = usr_password) session <- submit_form(session, filledform) 在这一点上,我收到此错误: Error in names(submits)[[1]] : subscript out of bounds 我该如何提交此表格? 回答1 这是一个对我有用的肮脏的技巧:在研究了commit_form源代码之后,我认为可以通过在表单的代码版本中注入伪造的submit_form按钮来解决此问题,然后submit_form函数将调用此方法。 它可以正常工作,只是它发出警告时经常列出不适当的输入对象(尽管在下面的示例中未列出)。 但是,尽管有警告,该代码仍对我有效: session <- html_session("www.chase.com") form <-
  • 如何将div标签制作为链接(How do you make a div tag into a link)
    问题 如何将div标签制作为链接。 我希望整个div都是可点击的。 回答1 JS: <div onclick="location.href='url'">content</div> jQuery的: $("div").click(function(){ window.location=$(this).find("a").attr("href"); return false; }); 确保对这些DIV使用cursor:pointer 回答2 如果您使用HTML5,因为在此的其他问题尖锐,你可以把你的div里面a : <a href="http://www.google.com"><div>Some content here</div></a> 建议使用此方法,因为它可以在您的结构中清楚地表明所有内容都是可单击的,并且指向何处。 回答3 如果必须在div内设置锚标记,则还可以使用CSS来设置锚,以通过display:block填充div。 因此: <div style="height: 80px"><a href="#" style="display: block">Text</a></div> 现在,当用户将光标悬停在该div上时,锚标记将填充div。 回答4 因此,您希望某个元素成为不是它的东西吗? 一般来说,这不是一个好主意。 如果需要链接,请使用链接。 在大多数情况下