none
msdn上提供的http post例子代码执行不成功,求解 RRS feed

  • 问题

  • 您好,

       

    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出问题了?

    2012年7月10日 12:49

答案

  • 是你的 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&amp;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(&quot;HttpPostButton&quot;, &quot;&quot;, false, &quot;&quot;, &quot;HttpPostPage.aspx&quot;, 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
    2012年7月10日 14:45

全部回复

  • 是你的 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&amp;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(&quot;HttpPostButton&quot;, &quot;&quot;, false, &quot;&quot;, &quot;HttpPostPage.aspx&quot;, 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
    2012年7月10日 14:45
  • 额……首先谢谢你。

    好吧,看来是IE的问题。幸运的是,这不是我的IE,不幸的是……这是客户的……

    我说怎么好好的代码到他们那就各种问题……

    2012年7月11日 7:59