繁体   English   中英

添加成功以加倍jquery / ajax帖子

[英]Add success to double jquery/ajax post

我正在使用以下内容将表单数据从Web应用程序发布到服务器端php和quickbase。 fill.php处理签名,将其附加到pdf,然后通过电子邮件发送结果。

一切都很好,除了我没有真正成功的功能:

$('#sendbtn').click(function(){

    signatures();

    $.post( 'https://www.quickbase.com/db/dbname?act=API_AddRecord', $('form').serialize());

    $.post( 'fill.php', $('form').serialize(), $.mobile.changePage('#successpop', {transition: 'pop', role: 'dialog'}));

});

弹出窗口显示,但它不是任何成功的真实指标。 如何在显示成功弹出窗口之前从这些帖子中的一个或两个获得回复? 在成功的条件下有条不紊地从一个帖子转到另一个帖子,但我并不担心QuickBase的帖子。 我肯定需要在显示成功之前确认fill.php帖子。

我喜欢这个是它避免重定向到我的应用程序外的网址。

谢谢你的帮助!!

<form action="" encoding='multipart/form-data' encType='multipart/form-data'>
<input type=text name=_fid_6 >
<input type=text name=_fid_7 >
<input type=text name=_fid_8 >
<input type="hidden" name="img" id="img" />
<input type="button" value="Sign!" id="sendbtn" />
</form>  

        <script>
            $(document).ready(function() {
                $("#signature").jSignature()
            })
            function signatures(){
                var $sigdiv = $("#signature");
                var datax = $sigdiv.jSignature("getData","image");
                $('#img').val(datax);
                $sigdiv.jSignature("reset")
            }
        </script>

<script>
$(document).ready( function(){
    $('#sendbtn').click(function(){

        signatures();

        $.post( 'https://www.quickbase.com/db/dbname?act=API_AddRecord', $('form').serialize());

        $.post( 'fill.php', $('form').serialize(), $.mobile.changePage('#successpop', {transition: 'pop', role: 'dialog'}));

    });
});
</script>

<div data-role="page" id="successpop">
<div data-role="header" data-theme="c">
<h1>QAF Sent</h1>
</div>
<div data-role="content" data-theme="d">    
<h2>Your QAF has been sent</h2> 
<p><input type="button" data-inline="true" data-theme="b" value="Begin New QAF" data-icon="back" onclick="clearForm();"/></p>
</div></div>

其中一个$ .post()将首先完成,一个将完成第二个。 你不一定知道在第一个完成时设置一个全局变量(如布尔值),然后添加一个true的检查。 当将值视为true的success函数调用onDoubleSuccess()函数时。 像这样( 演示 ):

<script>
  $(document).ready( function(){
    $('#sendbtn').click(function(){
      var finishedFirstPost = false,
      onDoubleSuccess = function() {
        //code goes here
        $.mobile.changePage('#successpop', {transition: 'pop', role: 'dialog'});
      };
      signatures();
      $.post(
        'https://www.quickbase.com/db/dbname?act=API_AddRecord',
        $('form').serialize(),
        function() {
          if(finishedFirstPost) {
            onDoubleSuccess();
          } else {
            finishedFirstPost = true;
          }
        });
      $.post(
        'fill.php',
        $('form').serialize(),
        function() {
          if(finishedFirstPost) {
            onDoubleSuccess();
          } else {
            finishedFirstPost = true;
          }
        });
    });
  });
</script>

此外,如果没有CORS支持 ,您无法对外部域执行HTTP POST,因此您应将Quickbase $.post()更改为$.get() 这是API文档显示这个shoudl工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM