Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 发送html表单2次,互不阻塞_Php_Jquery_Html - Fatal编程技术网

Php 发送html表单2次,互不阻塞

Php 发送html表单2次,互不阻塞,php,jquery,html,Php,Jquery,Html,我想用两种不同的方式发送html表单 首先,我需要一个jQuery.submit()将信息发送到Web服务,然后直接将表单发送到数据库 现在我的问题是当我使用event.preventDefault()时;它总是只将信息发送到Web服务,而不发送到数据库 如果我不使用pereventDefault();它将信息发送到Web服务,但出于竞争条件,它不会等待其成功函数post.done()。这些信息会进入数据库,但不会进入MyWebService jQuery('#sendform').submit

我想用两种不同的方式发送html表单

首先,我需要一个jQuery.submit()将信息发送到Web服务,然后直接将表单发送到数据库

现在我的问题是当我使用event.preventDefault()时;它总是只将信息发送到Web服务,而不发送到数据库

如果我不使用pereventDefault();它将信息发送到Web服务,但出于竞争条件,它不会等待其成功函数post.done()。这些信息会进入数据库,但不会进入MyWebService

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函数。我会给自己更多的信息。你让我很开心