【问题标题】:2 ways for submitting a form?2 提交表单的方法?
【发布时间】:2013-08-30 01:55:17
【问题描述】:

AFAIK 有两种提交表单的方法。

例如:asp.net 有Button.UseSubmitBehavior 属性

获取或设置一个值,该值指示 Button 控件是否使用 客户端浏览器的提交机制或ASP.NET回发机制。

如果值设置为false,它会生成下面的脚本来提交表单。

//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
    theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
//]]>

问题:

但是,如果它使用 ASP.NET 回发机制 - 它是如何完成的?

  • 这两种提交表单的方法有什么区别

【问题讨论】:

    标签: javascript html asp.net forms submit


    【解决方案1】:

    不使用回发的方法是通过浏览器的提交机制完成的。想象一下页面上有一个标准的 HTML 表单,带有操作和方法属性。像这样的:

    <form action="server_script.asp" method="post">
    Username: <input type="text" name="user">
    <input type="submit" value="Submit">
    </form>
    

    那么回发方法的工作原理如下。来自微软的文档:

    如果您指定 false,则 ASP.NET 页面框架将客户端脚本添加到页面以将表单发布到服务器。

    此机制使用提交表单的脚本(可能是 js)覆盖浏览器提交机制。我从未使用过 ASP.NET,但我想它会为您生成一些将表单提交到服务器的 AJAX 代码。这样做的好处是浏览器不会重定向到任何地方来提交表单。浏览器停留在一个页面上,脚本以静默方式将数据提交给服务器。

    【讨论】:

    • 您的回答重复了我的问题事实。 __doPostBack 的脚本不适用于 ajax。 ajax 使用 xmlhttp 对象。但是在使用更新面板时确实会使用它。无论如何,这不是我的问题。
    猜你喜欢
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 2019-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多