积极答复者
msdn上提供的http post例子代码执行不成功,求解

问题
-
您好,
http://code.msdn.microsoft.com/How-to-Pass-Data-Between-935838e4/view/Discussions
How to Pass Data Between ASP.NET Pages
我下载了这个例子代码,运行后发现在IE9下点击“Use HttpPost”按钮时,页面被提交,但是并没有提交到PostBackUrl指定的"~/HttpPostPage.aspx"页面,而是又返回到default.aspx页来了……囧,Firefox13下执行正常。。
比较了一下两个浏览器的source code,发现IE9竟然丢掉了包括doPostBack在内的全部javascript代码……
IE9下的源文件
FireBug的源文件。
谁能告诉我到底发生了什么……为什么IE9居然会丢掉asp.net生成的javascript?我的IE9出问题了?
答案
-
是你的 IE9 问题吧?
我测试了一下,没有问题。在 IE9 下页面源码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><title> Source Page </title></head> <body> <form method="post" action="Default.aspx" id="form1"> <div class="aspNetHidden"> <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /> <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /> <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJLTI3NTQ5MzM0ZGRnmDozcL73cWcRVTrhrH7GT824dk7EJUYeluUI9YQcXg==" /> </div> <script type="text/javascript"> //<![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(); } } //]]> </script> <script src="/WebResource.axd?d=sGDmmXrL0aFNYGRSCrt0eNp7VTwmrtsuU33nacufKIr-LEkcikm1Af3sK1Nc5CkHW2uTs-TUhuMTrjqgNs3_7VqPXx9TKNw5kQHT6vTBkSc1&t=634685607468094846" type="text/javascript"></script> <div class="aspNetHidden"> <input type="hidden" name="__PREVIOUSPAGE" id="__PREVIOUSPAGE" value="hsC-S_w3ii6reY_QtUrVklEyVSY2gxXsPkR3NBjlJTbYysH1yT8HT2442K09mupxe39ElNuyrlCmfDA3lMuZNk7LGinemVRjFbvkNrBwbh41" /> <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWBwKtruW+CgLR0rbCAgK7tpb7AwKM8KvPDwLqzeifBgKYk/ezAwKnyr+bDaAbrL4KZKsoWsAEPbNTh18Cq0L0wIEIU76/DPDPIhSk" /> </div> <div> <h1>Source Page</h1> Data to send: <input name="DataToSendTextBox" type="text" value="Hello World!" id="DataToSendTextBox" /><br /><br /> <input type="submit" name="QueryStringButton" value="Use Query String" id="QueryStringButton" /><br /><br /> <input type="submit" name="HttpPostButton" value="Use HttpPost" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("HttpPostButton", "", false, "", "HttpPostPage.aspx", false, false))" id="HttpPostButton" /><br /><br /> <input type="submit" name="SessionStateButton" value="Use Session State" id="SessionStateButton" /><br /><br /> <input type="submit" name="PublicPropertiesButton" value="Use Public Properties" id="PublicPropertiesButton" /><br /><br /> <input type="submit" name="ControlInfoButton" value="Use Control Info" id="ControlInfoButton" /> </div> </form> </body> </html>
冠军
- 已标记为答案 David Zha0 2012年7月11日 7:57
全部回复
-
是你的 IE9 问题吧?
我测试了一下,没有问题。在 IE9 下页面源码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><title> Source Page </title></head> <body> <form method="post" action="Default.aspx" id="form1"> <div class="aspNetHidden"> <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /> <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /> <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJLTI3NTQ5MzM0ZGRnmDozcL73cWcRVTrhrH7GT824dk7EJUYeluUI9YQcXg==" /> </div> <script type="text/javascript"> //<![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(); } } //]]> </script> <script src="/WebResource.axd?d=sGDmmXrL0aFNYGRSCrt0eNp7VTwmrtsuU33nacufKIr-LEkcikm1Af3sK1Nc5CkHW2uTs-TUhuMTrjqgNs3_7VqPXx9TKNw5kQHT6vTBkSc1&t=634685607468094846" type="text/javascript"></script> <div class="aspNetHidden"> <input type="hidden" name="__PREVIOUSPAGE" id="__PREVIOUSPAGE" value="hsC-S_w3ii6reY_QtUrVklEyVSY2gxXsPkR3NBjlJTbYysH1yT8HT2442K09mupxe39ElNuyrlCmfDA3lMuZNk7LGinemVRjFbvkNrBwbh41" /> <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWBwKtruW+CgLR0rbCAgK7tpb7AwKM8KvPDwLqzeifBgKYk/ezAwKnyr+bDaAbrL4KZKsoWsAEPbNTh18Cq0L0wIEIU76/DPDPIhSk" /> </div> <div> <h1>Source Page</h1> Data to send: <input name="DataToSendTextBox" type="text" value="Hello World!" id="DataToSendTextBox" /><br /><br /> <input type="submit" name="QueryStringButton" value="Use Query String" id="QueryStringButton" /><br /><br /> <input type="submit" name="HttpPostButton" value="Use HttpPost" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("HttpPostButton", "", false, "", "HttpPostPage.aspx", false, false))" id="HttpPostButton" /><br /><br /> <input type="submit" name="SessionStateButton" value="Use Session State" id="SessionStateButton" /><br /><br /> <input type="submit" name="PublicPropertiesButton" value="Use Public Properties" id="PublicPropertiesButton" /><br /><br /> <input type="submit" name="ControlInfoButton" value="Use Control Info" id="ControlInfoButton" /> </div> </form> </body> </html>
冠军
- 已标记为答案 David Zha0 2012年7月11日 7:57