问题描述
||
因此,这有点复杂。我有一个表格,需要将结果提交到两个不同的地方。
首先是ajax调用,我将结果发送到PHP页面。第二步是照常提交表单。
这是我的JavaScript:
<script type=\"text/javascript\">
$(function() {
$(\"#requestaction\").click(function() {
var fname = $(\"input#first_name\").val();
var lname = $(\"input#last_name\").val();
var email = $(\"input#email\").val();
var phone = $(\"input#phone\").val();
var oid = $(\"input#oid\").val();
var retURL = $(\"input#retURL\").val();
var dataString = \'&email=\' + email + \'&phone=\' + phone + \'&oid=\' + oid + \'&retURL=\' + retURL;
//alert (dataString);return false;
$.ajax({
type: \"POST\",url: \"http://www.myurl.com/custom/callgateway.php?first_name=\" + fname + \"&last_name=\" + lname,data: dataString
});
$(\"#requestaction\").click(function() {
$(\"#oid\").delay(1000);
$(\"#nashform\").submit();
});
return false;
});
});
</script>
所以我想发生的事情是ajax调用将结果发送到该页面。然后,我想延迟几秒钟,或者直到完成为止需要多长时间,我希望提交具有#nashform ID的表单。看来我可以使两者分别发生,但是当我同时尝试此代码时-仅#nashform代码完全通过,因此ajax永远没有机会。
有什么建议么?
解决方法
将表单提交放入ajax调用的成功回调中:
$.ajax({
type: \"POST\",url: \"http://www.myurl.com/custom/callgateway.php?first_name=\" + fname + \"&last_name=\" + lname,data: dataString,success: function(response) { $(\"#nashform\").submit(); }
});
, $.ajax({
type: \"POST\",success: thesubmitfunction
});
在ajax调用成功完成后,将在thesubmitfunction
中提交表单提交。
, 您需要一个回调函数来在ajax()
返回后提交表单。
, 而不是延迟,为什么不将ѭ5的提交添加到AJAX发布完成后进行的回调中?这样,您就不会在中间或后期削减AJAX传输。
您也可以考虑同时使用AJAX进行发布...两个都同时发布,一旦两者都完成,页面就可以更新(甚至重定向),给用户一种幻想,即数据是正常提交的。