[英]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.