我有一个客户/新闻通讯选择表格非常简单。当客户订阅时,我将通过Ajax将数据发布到“mail.php”表单,然后该表单将电子邮件发送到已选择的商店并通知他们。另一方面,订阅表单的操作是一个外部URL,它获取POST参数并将它们解析为外部订户系统。
我的问题是我可以让它发送电子邮件,但是在Ajax操作完成mail.php发布之后,我希望脚本继续将其发布到外部URL。代码如下所示:
<script>
$(document).ready(function() {
$( "#subscribeform" ).submit(function( event ) {
event.preventDefault();
var pFirstName = $("#firstname").val();
var pLastName = $("#name").val();
var pSalutation = $("#salutation").val();
var peMail = $("#email").val();
var pDOB = $("#dob").val();
var pMailTo = $("#shop").val();
var data = {
firstname: pFirstName,
name: pLastName,
salutation: pSalutation,
email: peMail,
dob: pDOB,
mailto: pMailTo
};
$.ajax({
type: "POST",
url: "mail.php",
data: data,
success: function(){
$('#subscribeform').attr('action', "http:///theexternalURL").submit();
}
});
});
});
</script>
<form id="subscribeform" action="http://theexternalURL" method="post">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
等...
我认为主要的问题是我在使用jQuery的onsubmit表单上执行此操作,即使我尝试替换成功函数中的URL,脚本也会继续调用并在循环中运行而不是继续发布到外部网址。
您有什么方向或想法可以改变吗?
答案 0 :(得分:0)
而不是再次调用submit()
再次使用$.ajax()
,
$.ajax({
type: "POST",
url: "mail.php",
data: data,
success: function(){
$.ajax({
type: "POST",
url: "theexternalURL",
data: data, // same date to another url
success: function(){
// your final response here
}
});
}
});
答案 1 :(得分:0)
也许您应该尝试通过在成功回调中添加另一个$ .ajax来发送表单,也就是CORS:
<script>
$(document).ready(function() {
$( "#subscribeform" ).submit(function( event ) {
event.preventDefault();
var pFirstName = $("#firstname").val();
var pLastName = $("#name").val();
var pSalutation = $("#salutation").val();
var peMail = $("#email").val();
var pDOB = $("#dob").val();
var pMailTo = $("#shop").val();
var data = {
firstname: pFirstName,
name: pLastName,
salutation: pSalutation,
email: peMail,
dob: pDOB,
mailto: pMailTo
};
$.ajax({
type: "POST",
crossDomain: true, // maybe you will need to add this
url: "http:///theexternalURL/ACTION",
data: data,
success: function(){
// $('#subscribeform').attr('action', "http:///theexternalURL").submit();
$.ajax({
type: "POST",
url: "mail.php",
data: data,
success: function(){
// SHOW SUCCESS MESSAGE FOR ACTION 2
}
});
}
});
});
});
</script>
答案 2 :(得分:0)
感谢所有的想法和回复。
Ultimatey我使用one()函数使其只触发一次然后跳转到成功事件中的默认动作:
$( "#subscribeform" ).one( "submit", function(event) {
谢谢!:)