form表单只提交数据而不进行页面跳转的解决方案

Posted 沧海一粟,何以久远

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了form表单只提交数据而不进行页面跳转的解决方案相关的知识,希望对你有一定的参考价值。

转载

  将数据提交到saveReport(form的action指向)页面,但是页面又不进行跳转,即保持当前页面不变呢?利用jquery的ajaxSubmit函数以及form的onsubmit函数完成

  一般的form提交操作写法为:

<form action="saveReport.htm" method="post"> 
  …… 
  <input type="submit" value="保存报告"/> 
</form> 

 

<form action="{{ url_for(‘zapapi.zap_task_delete‘) }}" method="post" style="display: inline">
  <input  name="session_name" value="{{ i[2] }}" type="hidden">
  <input  name="zap_server_addr" value="{{ i[3] }}" type="hidden">
  <button id="scan_log_delete{{ i[2] }}" class="btn red" type="submit" name="delete" value="delete"><i class="icon-remove"></i> 删除</button>
</form>


点击submit按钮或直接回车可以将数据提交到saveReport页面,但是提交后也会跳转到saveReport页面 

如何做到 
将数据提交到saveReport(form的action指向)页面,但是页面又不进行跳转,即保持当前页面不变呢?? 
这种需要在load一个页面的时候尤其迫切。 

利用jquery的ajaxSubmit函数以及form的onsubmit函数完成,如下: 

 

<form id="saveReportForm" action="saveReport.htm" method="post" onsubmit="return saveReport();"> 
  <input type="submit" value="保存报告"/> 
</form> 

 

<form id="stopstart{{ i[2] }}" onsubmit="return Stop{{ i[2] }}()" style="display: inline">
    <button id="startstop{{ i[2] }}" class="btn yellow" type="submit" name="stop" value="stop"><i id="start_stop{{ i[2] }}" class="icon-stop"></i> 停止</button></form>

 

form增加一个id用于在jquery中调用,增加一个onsubmit函数用于submit前自己提交表单 

saveReport对应函数为

<script>
function saveReport() { 
// jquery 表单提交 
  $("#showDataForm").ajaxSubmit(function(message) { 
  // 对于表单提交成功后处理,message为提交页面saveReport.htm的返回内容 
  }); 

return false; // 必须返回false,否则表单会自己再做一次提交操作,并且页面跳转 
}
</script>

 

<script>
            /**
             * @return {boolean}
             */
            function Stop{{ i[2] }}() {
                $.ajax({
                type: "post",
                url: "{{ url_for(‘zapapi.zap_task_stop‘) }}",
                data: "session_name={{ i[2] }}&zap_server_addr="+$(#server{{ i[2] }}).text(),
                success: function(msg) {
                    if(msg.success){
                        alert(msg.message)
                        $(#report{{ i[2] }}).removeAttr(disabled);
                        $(#startstop{{ i[2] }}).text("启动");
                        $(#startstop{{ i[2] }}).removeClass(yellow);
                        $(#startstop{{ i[2] }}).addClass(blue);
                        $(#startstop{{ i[2] }}).prepend(<i id="start_stop{{ i[2] }}"></i>);
                        $(#start_stop{{ i[2] }}).addClass(icon-play);
                        $(#stopstart{{ i[2] }}).attr({"onsubmit": "return Start{{ i[2] }}()"})

                        $(#basic_opener{{ i[2] }}).text("申请");
                        $(#basic_opener{{ i[2] }}).removeClass(green);
                        $(#basic_opener{{ i[2] }}).addClass(gray);
                        $(#basic_opener{{ i[2] }}).prepend(<i id="icon{{ i[2] }}"></i>);
                        $(#icon{{ i[2] }}).addClass(icon-plus);
                        $(#server{{ i[2] }}).text("");
                        $(#form{{ i[2] }}).removeAttr(onsubmit);
                        $(#form{{ i[2] }}).attr({"onsubmit": "return ZAP_SERVER_APPLY{{ i[2] }}()"});

                    } else {
                        alert(msg.message)
                    }
                    }
                });
            return false;
            }
        </script>

 

以上是关于form表单只提交数据而不进行页面跳转的解决方案的主要内容,如果未能解决你的问题,请参考以下文章

Form提交表单后页面刷新不跳转的实现

php form表单怎么把数据提交到本页而不跳转?

为啥使用了form表单之后页面会跳转,并且页面一片空白

html的form提交之后,是如何进行跳转的?整个过程浏览器是如何实现的?

Form表单只提交数据,页面不跳转,返回表单值

form表单提交上传图片