如何防止表单提交重定向

时间:2014-11-05 11:17:28

标签: javascript jquery ajax

我正在获取一个带有用户参数的表单,当我对一个页面进行AJAX调用时,该页面稍后会被提交到一个url,这样我就可以提前为同一个用户创建一个会话。 那个人去那个地方,他在那里看到了他的名字。 我创建了一个带有ID" abc_session "的div标签,将该表单(其id为 fm1 )分配给它,并提交表单。

现在根据需求会话创建,但页面会自动重定向到提交表单的网站网址。我只是不想发生这种情况。

任何人都可以建议一些东西......或者一些解决方法

AJAX返回的表单如下所示:

<html>
<body onload="document.fm1.submit();return false">
<form name = "fm1" method="post" action = "https://abcd.com/abc ">
<input type=hidden name ="name" value="xyz">
<input type=hidden name ="login_parameters" value="CDF5D71C5BDB942EE2FB6C285B8DEBFE4C5675137B615CD2276571813AAC872AC8942E26B71026414BED1FEA09427D0B20A50FE2F70032D2E5B382598EC3C71D73EAB4ECBF7273A73BEB98ACEA4A0B775E7772BDC7C6746C355">
</form></body>
</html>

,脚本就像这样

 $(document).ready(function() {

            function callwebsite()
            {
                 $.ajax({
                      url: "/NASApp/benemain/website",
                      data: {},
                      type:"POST",
                      dataType: 'text',
                      cache: false,
                      success: function (data) {

                          alert("Call made to website.. ");

                            console.log(data);
                            document.getElementById("abc_session").innerHTML=data;
                            document.fm1.submit();


                    },
                    error : function(response){
                        console.log('ERROR');
                    },
                    statusCode : {
                        500 : function() {
                            console.log('500 error');
                            window.location.reload(true);
                        },
                        401 : function() {
                            console.log('401 error');
                            window.location.reload(true);
                        },
                        404 : function(){
                            console.log('400 error');
                        }
                    }
                });
            }
            callwebsite();

尝试提取数据并按照quentin的建议捕获另一个ajax调用,但收到此错误&#34;跨源请求被阻止:同源策略禁止读取远程资源。这可以通过移动资源到同一个域或启用CORS。&#34;

$.ajax({
                      url: lcAction,
                      data: {partner_id:lcPartner,login_parameters:lcLP },

                      type:"POST",
                      headers:{'Access-Control-Allow-Origin': '*'},
                      dataType: 'text',
                      //crossDomain: true,
                      //cache: false,
                      success: function(data)
                      {
                          alert("success");
                      },
                      error:function(response)
                      {
                          //alert("error");
                          console.log(response);
                      }
                });

2 个答案:

答案 0 :(得分:0)

提交表单后,您应立即使用e.preventDefault()

答案 1 :(得分:0)

您正在提交表单:

document.getElementById("abc_session").innerHTML=data;
document.fm1.submit(); // Here

不要这样做。

从中提取数据并发出另一个Ajax请求。