使用Ajax / jQuery

时间:2018-03-26 09:31:51

标签: jquery ajax html5

我有一个客户/新闻通讯选择表格非常简单。当客户订阅时,我将通过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,脚本也会继续调用并在循环中运行而不是继续发布到外部网址。

您有什么方向或想法可以改变吗?

3 个答案:

答案 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) {

谢谢!:)