【问题标题】:how to prevent redirect on form submit如何防止表单提交重定向
【发布时间】:2014-11-05 11:17:28
【问题描述】:

当我对稍后提交到 url 的页面进行 AJAX 调用时,我得到一个带有用户参数的表单,以便我可以提前为同一用户创建会话,并且何时 那个人去那个网站,他在那里看到他的名字。 我创建了一个 id 为“abc_session”的 div 标签,将表单(其 id 为 fm1)分配给它,然后提交表单。

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

任何人都可以提出一些建议..或一些解决方法

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 调用,但出现此错误“跨源请求被阻止:同源策略不允许读取远程资源。这可以通过将资源移动到相同的域或启用 CORS。”

$.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);
                      }
                });

【问题讨论】:

    标签: javascript jquery ajax


    【解决方案1】:

    您正在提交表单:

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

    不要那样做。

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

    【讨论】:

    • 您能否分享任何如何从运行时通过 ajax 检索的表单中提取数据的示例。
    • 我提取了数据并使用 ajax 发布了它,但它给了我这个错误“”跨域请求被阻止:同源策略不允许读取远程资源。这可以通过移动资源来解决到同一个域或启用 CORS”。你知道这里有什么问题吗?
    【解决方案2】:

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

    【讨论】:

    • 事件处理程序由 ready 事件触发,而不是由表单提交触发。阻止默认操作不会做任何事情(因为没有针对 ready 事件的默认操作)。
    • 我的错。误会了。检查此链接以供参考:stackoverflow.com/questions/24248576/…
    猜你喜欢
    • 2011-08-20
    • 2011-05-01
    • 1970-01-01
    • 2017-05-05
    • 2010-11-18
    • 2017-09-15
    • 2015-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多