用于在提交表单时重定向到外部域的AJAX

时间:2016-12-01 15:33:24

标签: javascript jquery ajax forms

我有一个表单,它将数据提交到外部域:

<form action="https://EXTERNALdomain.com/register" id="form_register" method="POST">

  <input type="text" id="first-name" name="first-name" value="" placeholder="First Name" required/>
  <input type="text" id="last-name" name="last-name" value="" placeholder="Last Name" required/>
  <input type="email" id="email" value="" name="email" placeholder="Email Address" required/>
  <input type="password" id="password" name="password" placeholder="Password" required/>

  <input type="submit" value="Create Account" />

</form>

但是,我尝试提交表单并将其重定向到另一个页面,也在外部。到目前为止,我的尝试都没有成功使用AJAX。

<script type="text/javascript">
function sform() {
    $.ajax({
        url: "https://EXTERNALdomain.com/home",
        data: $('#request').serialize(),
        type: 'POST',
        success: function (resp) {
            alert(resp);
        },
        error: function(e) {
            alert('Error: '+e);
        }  
   });
}

我之后一直在调用表格:

<form onsubmit="sform()" id="request">

这不起作用。我只是得到一个很长的网址,而且表单实际上没有发布,页面只是重新加载

1 个答案:

答案 0 :(得分:1)

这是因为您要让表单提交,这会更改页面网址和POST数据。

从&#34;提交表单并将其重定向到另一个页面&#34;我假设您要将表单提交到https://EXTERNALdomain.com/register并重定向到https://EXTERNALdomain.com/home。为此,您需要使用$.ajax提交表单,并在成功时更改位置。

function sform() {
    $.ajax({
        url: $('#request').attr("action"),
        data: $('#request').serialize(),
        type: $('#request').attr("method"),
        success: function (resp) {
            location.href = "https://EXTERNALdomain.com/home"; // redirect
        },
        error: function(e) {
            alert('Error: '+e);
        }  
   });
   return false; // cancel default action
}