Php 发送html表单2次,互不阻塞
我想用两种不同的方式发送html表单 首先,我需要一个jQuery.submit()将信息发送到Web服务,然后直接将表单发送到数据库 现在我的问题是当我使用event.preventDefault()时;它总是只将信息发送到Web服务,而不发送到数据库 如果我不使用pereventDefault();它将信息发送到Web服务,但出于竞争条件,它不会等待其成功函数post.done()。这些信息会进入数据库,但不会进入MyWebServicePhp 发送html表单2次,互不阻塞,php,jquery,html,Php,Jquery,Html,我想用两种不同的方式发送html表单 首先,我需要一个jQuery.submit()将信息发送到Web服务,然后直接将表单发送到数据库 现在我的问题是当我使用event.preventDefault()时;它总是只将信息发送到Web服务,而不发送到数据库 如果我不使用pereventDefault();它将信息发送到Web服务,但出于竞争条件,它不会等待其成功函数post.done()。这些信息会进入数据库,但不会进入MyWebService jQuery('#sendform').submit
jQuery('#sendform').submit(function(event) {
event.preventDefault(); //here comes the problem
var post = jQuery.post(url, {
email: email,
firstname: vorname,
surname: nachname,
origin: origin,
newsletter: newsletter
});
post.done(function(data) {
console.log("webservice-done")
//at this point the data should be send to databdase via send.php
});
});
这是我的HTML表单:
<section class="formular" id="formular">
<form id="sendform" action="send.php" method="post" enctype="multipart/form-data">
<div class="links">
<input id="idvorname" name="vorname" type="text" placeholder="Vorname*" required/>
<br>
<input id="idnachname" name="nachname" type="text" placeholder="Nachname*" required/>
<br>
<input id="idemail" name="email" type="text" placeholder="E-Mail-Adresse*" required/>
<p>* Pflichtfeld</p>
</div>
<div class="absenden">
<input id="senden" type="submit"/></input>
</div>
</form>
*普利希特菲尔德
因此,如果我使用preventDefault(),jQuery部分中的post就完成了,数据将发送到webservice,而不是通过send.php发送到数据库。如果我不使用preventDefault(),则数据不会正确发送到我的Web服务,而是通过send.php发送到我的数据库
是否有可能像preventDefault()那样将其发送到Web服务。只有在完成之后,它才会发送到数据库
我已经尝试过使用jQuery表单插件,但它也不起作用。和以前一样的错误。我还尝试在post.done函数中使用.submit(),但我只在向Web服务发送infinte数据的循环中结束
jQuery('#sendform').submit(function(event) {
event.preventDefault(); //here comes the problem
var post = jQuery.post(url, {
email: email,
firstname: vorname,
surname: nachname,
origin: origin,
newsletter: newsletter
});
post.done(function(data) {
console.log("webservice-done")
//at this point the data should be send to databdase via send.php
});
});
任何帮助都应该这样做,调用本机提交DOM方法以避免jQuery处理程序提交循环:
jQuery('#sendform').submit(function(event) {
// to avoid any multiple form submissions
$(this).find(':submit').prop('disabled', true);
event.preventDefault();
var post = jQuery.post(url, {
email: email,
firstname: vorname,
surname: nachname,
origin: origin,
newsletter: newsletter
});
post.done(function(data) {
console.log("webservice-done")
this.submit(); // submit form here
}.bind(this)); // bind to set relevant context
});
这应该可以做到,调用本机提交DOM方法以避免jQuery处理程序提交循环:
jQuery('#sendform').submit(function(event) {
// to avoid any multiple form submissions
$(this).find(':submit').prop('disabled', true);
event.preventDefault();
var post = jQuery.post(url, {
email: email,
firstname: vorname,
surname: nachname,
origin: origin,
newsletter: newsletter
});
post.done(function(data) {
console.log("webservice-done")
this.submit(); // submit form here
}.bind(this)); // bind to set relevant context
});
这个答案可能对你有帮助这个答案可能对你有帮助非常感谢你。这正是我想要的。我不知道.bind函数。我会给自己更多的信息。你让我很开心,非常感谢你。这正是我想要的。我不知道.bind函数。我会给自己更多的信息。你让我很开心