C# popuppanel中的Pagemethods不会在IE9中第二次加载

C# popuppanel中的Pagemethods不会在IE9中第二次加载,c#,javascript,internet-explorer-9,modalpopupextender,pagemethods,C#,Javascript,Internet Explorer 9,Modalpopupextender,Pagemethods,我有一个主页,其中调用了一些pagemethod来执行一些活动。此主页中使用popuppanel(popuppanel内容页也有pagemethods)来显示一些详细信息。如果多次执行相同操作(即多次打开弹出面板),则它在除IE9以外的所有其他浏览器中都能正常工作(即使在IE8中也能正常工作)。但是,第一次执行时间执行成功。下面提供了正在使用的代码 Scriptmanager的使用方法如下: 主页中的脚本: function Clkd(){ var ppnl=document.get

我有一个主页,其中调用了一些pagemethod来执行一些活动。此主页中使用popuppanel(popuppanel内容页也有pagemethods)来显示一些详细信息。如果多次执行相同操作(即多次打开弹出面板),则它在除IE9以外的所有其他浏览器中都能正常工作(即使在IE8中也能正常工作)。但是,第一次执行时间执行成功。下面提供了正在使用的代码

Scriptmanager的使用方法如下:

主页中的脚本:

function Clkd(){
     var ppnl=document.getElementById("if1");
     ppnl.src="Test1.aspx";
     $find('<%= MPE.ClientID %>').show();
}

function Clkd2(){
     var ppnl=document.getElementById("if1");
     ppnl.src="";
     $find('<%= MPE.ClientID %>').hide();
}

$(document).ready(function(){
     PageMethods.mainPageMethod("MainTest",cbackfn);
});

function cbackfn(str){
     alert(str);
}
 [System.Web.Services.WebMethod(EnableSession = true)]
        public static string mainPageMethod(String mainStr)
        {
            return mainStr + " Ok";
        }
$(document).ready(function(){
     PageMethods.Testpm("Test",fnd);
});

function fnd(str){
     alert(str);
}
 [System.Web.Services.WebMethod(EnableSession = true)]
        public static string Testpm(String alrt)
        {
            return "Ok";
        }
<head runat="server">
    <title></title>
    <script src="Scripts/jquery-1.9.1.js" type="text/javascript"></script>
    <script type="text/javascript">
        function Clkd() {
            var ppnl = document.getElementById("if1");
            ppnl.src = "test.aspx";
            $find('<%= MPE.ClientID %>').show();
        }

        function Clkd2() {
            var ppnl = document.getElementById("if1");
            ppnl.src = "";
            $find('<%= MPE.ClientID %>').hide();
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <cc1:ToolkitScriptManager runat="server" ID="scriptmanager1">
    </cc1:ToolkitScriptManager>
    <asp:Panel ID="pnl1" runat="server">
        <iframe id="if1"></iframe>
        <asp:Button ID="btnHidePopup" runat="server" Text="Hide" />
    </asp:Panel>
    <asp:Button ID="btnShowPopup" runat="server" Text="Show" OnClientClick="Clkd();" />
    <cc1:ModalPopupExtender ID="MPE" runat="server" TargetControlID="btnShowPopup" PopupControlID="pnl1"
        DropShadow="true" OkControlID="btnHidePopup" OnOkScript="Clkd2()" CancelControlID="btnHidePopup">
    </cc1:ModalPopupExtender>
    </form>
</body>
<head runat="server">
    <title></title>
    <script src="Scripts/jquery-1.9.1.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            PageMethods.Testpm("Test", fnd);
        });
        function fnd(str) {
            alert(str);
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
     <cc1:ToolkitScriptManager runat="server" ID="scriptmanageriframe" EnablePageMethods="true">
    </cc1:ToolkitScriptManager>
    Hello World this is game.
    </div>
    </form>
</body>
 [System.Web.Services.WebMethod(EnableSession = true)]
        public static string Testpm(String alrt)
        {

            return "Ok";
        }
Test1.aspx页面详细信息(这是在弹出面板中加载的页面):

function Clkd(){
     var ppnl=document.getElementById("if1");
     ppnl.src="Test1.aspx";
     $find('<%= MPE.ClientID %>').show();
}

function Clkd2(){
     var ppnl=document.getElementById("if1");
     ppnl.src="";
     $find('<%= MPE.ClientID %>').hide();
}

$(document).ready(function(){
     PageMethods.mainPageMethod("MainTest",cbackfn);
});

function cbackfn(str){
     alert(str);
}
 [System.Web.Services.WebMethod(EnableSession = true)]
        public static string mainPageMethod(String mainStr)
        {
            return mainStr + " Ok";
        }
$(document).ready(function(){
     PageMethods.Testpm("Test",fnd);
});

function fnd(str){
     alert(str);
}
 [System.Web.Services.WebMethod(EnableSession = true)]
        public static string Testpm(String alrt)
        {
            return "Ok";
        }
<head runat="server">
    <title></title>
    <script src="Scripts/jquery-1.9.1.js" type="text/javascript"></script>
    <script type="text/javascript">
        function Clkd() {
            var ppnl = document.getElementById("if1");
            ppnl.src = "test.aspx";
            $find('<%= MPE.ClientID %>').show();
        }

        function Clkd2() {
            var ppnl = document.getElementById("if1");
            ppnl.src = "";
            $find('<%= MPE.ClientID %>').hide();
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <cc1:ToolkitScriptManager runat="server" ID="scriptmanager1">
    </cc1:ToolkitScriptManager>
    <asp:Panel ID="pnl1" runat="server">
        <iframe id="if1"></iframe>
        <asp:Button ID="btnHidePopup" runat="server" Text="Hide" />
    </asp:Panel>
    <asp:Button ID="btnShowPopup" runat="server" Text="Show" OnClientClick="Clkd();" />
    <cc1:ModalPopupExtender ID="MPE" runat="server" TargetControlID="btnShowPopup" PopupControlID="pnl1"
        DropShadow="true" OkControlID="btnHidePopup" OnOkScript="Clkd2()" CancelControlID="btnHidePopup">
    </cc1:ModalPopupExtender>
    </form>
</body>
<head runat="server">
    <title></title>
    <script src="Scripts/jquery-1.9.1.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            PageMethods.Testpm("Test", fnd);
        });
        function fnd(str) {
            alert(str);
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
     <cc1:ToolkitScriptManager runat="server" ID="scriptmanageriframe" EnablePageMethods="true">
    </cc1:ToolkitScriptManager>
    Hello World this is game.
    </div>
    </form>
</body>
 [System.Web.Services.WebMethod(EnableSession = true)]
        public static string Testpm(String alrt)
        {

            return "Ok";
        }
下面的脚本代码:

function Clkd(){
     var ppnl=document.getElementById("if1");
     ppnl.src="Test1.aspx";
     $find('<%= MPE.ClientID %>').show();
}

function Clkd2(){
     var ppnl=document.getElementById("if1");
     ppnl.src="";
     $find('<%= MPE.ClientID %>').hide();
}

$(document).ready(function(){
     PageMethods.mainPageMethod("MainTest",cbackfn);
});

function cbackfn(str){
     alert(str);
}
 [System.Web.Services.WebMethod(EnableSession = true)]
        public static string mainPageMethod(String mainStr)
        {
            return mainStr + " Ok";
        }
$(document).ready(function(){
     PageMethods.Testpm("Test",fnd);
});

function fnd(str){
     alert(str);
}
 [System.Web.Services.WebMethod(EnableSession = true)]
        public static string Testpm(String alrt)
        {
            return "Ok";
        }
<head runat="server">
    <title></title>
    <script src="Scripts/jquery-1.9.1.js" type="text/javascript"></script>
    <script type="text/javascript">
        function Clkd() {
            var ppnl = document.getElementById("if1");
            ppnl.src = "test.aspx";
            $find('<%= MPE.ClientID %>').show();
        }

        function Clkd2() {
            var ppnl = document.getElementById("if1");
            ppnl.src = "";
            $find('<%= MPE.ClientID %>').hide();
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <cc1:ToolkitScriptManager runat="server" ID="scriptmanager1">
    </cc1:ToolkitScriptManager>
    <asp:Panel ID="pnl1" runat="server">
        <iframe id="if1"></iframe>
        <asp:Button ID="btnHidePopup" runat="server" Text="Hide" />
    </asp:Panel>
    <asp:Button ID="btnShowPopup" runat="server" Text="Show" OnClientClick="Clkd();" />
    <cc1:ModalPopupExtender ID="MPE" runat="server" TargetControlID="btnShowPopup" PopupControlID="pnl1"
        DropShadow="true" OkControlID="btnHidePopup" OnOkScript="Clkd2()" CancelControlID="btnHidePopup">
    </cc1:ModalPopupExtender>
    </form>
</body>
<head runat="server">
    <title></title>
    <script src="Scripts/jquery-1.9.1.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            PageMethods.Testpm("Test", fnd);
        });
        function fnd(str) {
            alert(str);
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
     <cc1:ToolkitScriptManager runat="server" ID="scriptmanageriframe" EnablePageMethods="true">
    </cc1:ToolkitScriptManager>
    Hello World this is game.
    </div>
    </form>
</body>
 [System.Web.Services.WebMethod(EnableSession = true)]
        public static string Testpm(String alrt)
        {

            return "Ok";
        }
页面方法:

function Clkd(){
     var ppnl=document.getElementById("if1");
     ppnl.src="Test1.aspx";
     $find('<%= MPE.ClientID %>').show();
}

function Clkd2(){
     var ppnl=document.getElementById("if1");
     ppnl.src="";
     $find('<%= MPE.ClientID %>').hide();
}

$(document).ready(function(){
     PageMethods.mainPageMethod("MainTest",cbackfn);
});

function cbackfn(str){
     alert(str);
}
 [System.Web.Services.WebMethod(EnableSession = true)]
        public static string mainPageMethod(String mainStr)
        {
            return mainStr + " Ok";
        }
$(document).ready(function(){
     PageMethods.Testpm("Test",fnd);
});

function fnd(str){
     alert(str);
}
 [System.Web.Services.WebMethod(EnableSession = true)]
        public static string Testpm(String alrt)
        {
            return "Ok";
        }
<head runat="server">
    <title></title>
    <script src="Scripts/jquery-1.9.1.js" type="text/javascript"></script>
    <script type="text/javascript">
        function Clkd() {
            var ppnl = document.getElementById("if1");
            ppnl.src = "test.aspx";
            $find('<%= MPE.ClientID %>').show();
        }

        function Clkd2() {
            var ppnl = document.getElementById("if1");
            ppnl.src = "";
            $find('<%= MPE.ClientID %>').hide();
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <cc1:ToolkitScriptManager runat="server" ID="scriptmanager1">
    </cc1:ToolkitScriptManager>
    <asp:Panel ID="pnl1" runat="server">
        <iframe id="if1"></iframe>
        <asp:Button ID="btnHidePopup" runat="server" Text="Hide" />
    </asp:Panel>
    <asp:Button ID="btnShowPopup" runat="server" Text="Show" OnClientClick="Clkd();" />
    <cc1:ModalPopupExtender ID="MPE" runat="server" TargetControlID="btnShowPopup" PopupControlID="pnl1"
        DropShadow="true" OkControlID="btnHidePopup" OnOkScript="Clkd2()" CancelControlID="btnHidePopup">
    </cc1:ModalPopupExtender>
    </form>
</body>
<head runat="server">
    <title></title>
    <script src="Scripts/jquery-1.9.1.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            PageMethods.Testpm("Test", fnd);
        });
        function fnd(str) {
            alert(str);
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
     <cc1:ToolkitScriptManager runat="server" ID="scriptmanageriframe" EnablePageMethods="true">
    </cc1:ToolkitScriptManager>
    Hello World this is game.
    </div>
    </form>
</body>
 [System.Web.Services.WebMethod(EnableSession = true)]
        public static string Testpm(String alrt)
        {

            return "Ok";
        }
如果第二次执行相同的操作(仅在IE9中),将引发以下错误

重要提示:如果主页没有任何页面方法,则其工作正常。 请帮我解决这个问题


我希望您使用c#中的相同web方法和您编写的jquery代码使用jquery对话框弹出而不是ajaxpopup面板。

在MPE上使用clientMode=“Static”,并在$find()中直接使用MPE id

ASPX代码:

<asp:ModalPopupExtender ID="modalpopup" ClientIDMode="Static" runat="server" CancelControlID="btnCancel"
OkControlID="btnOkay" TargetControlID="Button1" PopupControlID="Panel1" 
        Drag="true" >
</asp:ModalPopupExtender>

您应该添加相关的HTML,这可能会帮助其他人帮助您

我使用了你的代码并添加了缺失的代码,当我运行它时,它在包括IE9在内的所有浏览器中都能正常工作

请查找以下代码:

主页(默认为.aspx):

function Clkd(){
     var ppnl=document.getElementById("if1");
     ppnl.src="Test1.aspx";
     $find('<%= MPE.ClientID %>').show();
}

function Clkd2(){
     var ppnl=document.getElementById("if1");
     ppnl.src="";
     $find('<%= MPE.ClientID %>').hide();
}

$(document).ready(function(){
     PageMethods.mainPageMethod("MainTest",cbackfn);
});

function cbackfn(str){
     alert(str);
}
 [System.Web.Services.WebMethod(EnableSession = true)]
        public static string mainPageMethod(String mainStr)
        {
            return mainStr + " Ok";
        }
$(document).ready(function(){
     PageMethods.Testpm("Test",fnd);
});

function fnd(str){
     alert(str);
}
 [System.Web.Services.WebMethod(EnableSession = true)]
        public static string Testpm(String alrt)
        {
            return "Ok";
        }
<head runat="server">
    <title></title>
    <script src="Scripts/jquery-1.9.1.js" type="text/javascript"></script>
    <script type="text/javascript">
        function Clkd() {
            var ppnl = document.getElementById("if1");
            ppnl.src = "test.aspx";
            $find('<%= MPE.ClientID %>').show();
        }

        function Clkd2() {
            var ppnl = document.getElementById("if1");
            ppnl.src = "";
            $find('<%= MPE.ClientID %>').hide();
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <cc1:ToolkitScriptManager runat="server" ID="scriptmanager1">
    </cc1:ToolkitScriptManager>
    <asp:Panel ID="pnl1" runat="server">
        <iframe id="if1"></iframe>
        <asp:Button ID="btnHidePopup" runat="server" Text="Hide" />
    </asp:Panel>
    <asp:Button ID="btnShowPopup" runat="server" Text="Show" OnClientClick="Clkd();" />
    <cc1:ModalPopupExtender ID="MPE" runat="server" TargetControlID="btnShowPopup" PopupControlID="pnl1"
        DropShadow="true" OkControlID="btnHidePopup" OnOkScript="Clkd2()" CancelControlID="btnHidePopup">
    </cc1:ModalPopupExtender>
    </form>
</body>
<head runat="server">
    <title></title>
    <script src="Scripts/jquery-1.9.1.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            PageMethods.Testpm("Test", fnd);
        });
        function fnd(str) {
            alert(str);
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
     <cc1:ToolkitScriptManager runat="server" ID="scriptmanageriframe" EnablePageMethods="true">
    </cc1:ToolkitScriptManager>
    Hello World this is game.
    </div>
    </form>
</body>
 [System.Web.Services.WebMethod(EnableSession = true)]
        public static string Testpm(String alrt)
        {

            return "Ok";
        }

我希望有帮助

U可以尝试使用不同的弹出窗口

例如:

  • asp:ModalPopupExtender
    也可在
    ajaxtoolkit
  • jquery对话框弹出窗口

  • IE9在两个页面(mainpage、popuppanelpage)中都有pagemethods,但在pagemethods方面存在问题

    您可以在webservice(.asmx)文件中使用pagemethods

    我试过如下:

    defaultpage.aspx

    <head id="Head1" runat="server">
        <title>Untitled Page</title>
        <script language="javascript" type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
        <script type="text/javascript">
    
          function fnd123(str){
              alert(str);
        }
    
         function objFailed1(data) {
         fnd123(data);
          }
         function objGot1(data) {
    
                            fnd123(data.d);
    
                 }
        function Clkd(){
        var ppnl=document.getElementById("if1");
        $.ajax({
                 url: "Testser.asmx/GetData",
                 contentType: "application/json; charset=utf-8",
                 dataType: "json",
                 data:'{"FileName":"Data from default page"}',
                 type: 'POST',
                 success:objGot1,
                 error: objFailed1
             });
        ppnl.src="Test1.aspx";
         $find('MPE').show();
        }
    
    
         function Clkd2(){
        var ppnl=document.getElementById("if1");
         ppnl.src="";
         $find('MPE').hide();
         //PageMethods.clearPageData("/Test1.aspx",fnd1);
        }
    
    
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
          <asp:ToolkitScriptManager runat="server" ID="ToolkitScriptManager1" EnablePageMethods="true" EnablePartialRendering="false"/>
        <div>
        <input type="button" onclick="javascript:Clkd();return false;" value="Click" />
    
        <div>
            <asp:ModalPopupExtender ID="MPE" PopupControlID="popupPanel" PopupDragHandleControlID="popupPanel"
                runat="server" Enabled="True" TargetControlID="btnOk" CancelControlID="BtnCancel"
                BackgroundCssClass="PopupBackground" Drag="True" EnableViewState=true >
            </asp:ModalPopupExtender>
            <asp:Button Style="display: none" ID="BtnOk" runat="server"></asp:Button>
            <asp:Button Style="display: none" ID="BtnCancel" runat="server"></asp:Button>
        </div>
        <div>
            <asp:Panel ID="popupPanel" runat="server" Style="overflow: hidden; z-index: 100000;
                display: none; background-color: White; filter: alpha(opacity=100); opacity: 1.0;
                height: auto;">
                <asp:Panel ID="pnlLoginHeader" runat="server" CssClass="" Style="display: none;">
                    <table width="100%">
                        <tr style="text-align: center">
                            <td style="width: 97%;">
                                <p class="popupTitle">
                                    <asp:Label runat="server" ID="lblTitle" Text=""></asp:Label>
                                </p>
                            </td>
                            <td style="width: 3%;">
                                <p style="text-align: right;">
                                    <span id="lblPopupClose" style="cursor: pointer; color: White">Close</span>
                                </p>
                            </td>
                        </tr>
                    </table>
                </asp:Panel>
                <iframe id="if1" src="" class="" style=""></iframe>
            </asp:Panel>
            <asp:Button ID="Button1" runat="server" onclick="Button1_Click" 
                Text="Redirect" />
        </div>
    
        </div>
        </form>
    </body>
    
    <head id="Head1" runat="server">
        <title>Untitled Page</title>
            <script language="javascript" type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
    
        <script language="javascript" type="text/javascript">
              function fnd(str){
              alert(str);
        }
    
         function objFailed1(data) {
         fnd(data);
          }
         function objGot1(data) {
    
                            fnd(data.d);
    
                 }
    
         function Clkdwebservice(){
        $.ajax({
                 url: "Testser.asmx/GetData",
                 contentType: "application/json; charset=utf-8",
                 dataType: "json",
                 data:'{"FileName":"Data from test page"}',
                 type: 'POST',
                 success:objGot1,
                 error: objFailed1
             });
       }
    
        </script>
    
    </head>
    <body>
        <form id="form1" runat="server" enableviewstate="false">
        <asp:ToolkitScriptManager runat="server" ID="ToolkitScriptManager1" EnablePageMethods="true" />
        <div>
            <input type="button" onclick="javascript:Clkdwebservice();return false;" value="Click" />
             <input type="button" onclick="javascript:parent.Clkd2();return false;" value="Close" />
        </div>
    
        </form>
    </body>
    

    它对我来说工作正常。请检查它

    除了
    之外,您是否尝试过使用不同的方法来提供MPE的客户id<代码>是响应。编写时,它与MS Ajax Stuff不兼容。是的,我尝试过,但同样的错误扫描了,请发布修改过的代码?只需将“”更改为“MPE”,并使用“#MPE”进行检查。否,它仍然必须是有效的客户端ID。作为测试,您可以在呈现的HTML中验证真实的客户端ID并尝试使用它吗?例如,它可能类似于
    $find('Parent\u ctl00\u MPE')。show()
    请与ie9联系。它第一次工作正常。再次隐藏popuppanel,尝试显示它的获取错误。它在IE9中工作正常,每次打开它。完全没有错误。只需在新项目中使用我的代码,然后再试一次。