2013-08-27 35 views
0

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 回传机制 - 它怎么办?

  • 什么是区别这两种方法之间提交表单?

回答

0

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

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

然后,回发方法的工作原理如下。从Microsoft的文档:

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

该机制用提交表单的脚本(可能是js)覆盖浏览器提交机制。我从来没有使用ASP.NET,但我想它会生成一些AJAX代码给你提交表单到服务器。这有一个好处,即浏览器不会重定向到任何地方来提交表单。浏览器停留在一页上,脚本悄悄地将数据提交给服务器。

+0

你的答案重复我的问题事实。 '__doPostBack'脚本不适用于ajax。 ajax使用xmlhttp对象。但是在updatepanel正在使用时会使用它。无论如何,那不是我的问题。 –