いくつかのアクティビティを実行するために呼び出されるpagemethodを持つメイン ページがあります。popuppanel (popuppanel コンテンツ ページにも pagemethods があります) は、このメイン ページ内で詳細を表示するために使用されます。同じことを複数回実行した場合 (つまり、ポップアップ パネルを何度も開いた場合)、IE9 以外のすべてのブラウザーで動作しています(IE8 でも動作します)。ただし、初回の実行は成功します。使用されているコードを以下に示します。
次のように使用される Scriptmanager:
<ajaxToolkit:ToolkitScriptManager runat="server" ID="TSCM1" EnablePageMethods="true" />
メインページのスクリプト:
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";
}
Test1.aspx ページの詳細 (これは、ポップアップ パネル内に読み込まれたページです):
以下のスクリプトコード:
$(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";
}
同じことを 2 回目に実行すると、次のエラーがスローされます (IE9 のみ)。
SCRIPT5007: Unable to set value of the property '_UpdateProgress': object is null or undefined
ScriptResource.axd?........
SCRIPT5007: Unable to get value of the property 'WebServiceProxy': object is null or undefined
Test1.aspx, line 66 character 1
SCRIPT5007: Unable to get value of the property 'DomElement': object is null or undefined
ScriptResource.axd?......, line 2 character 18851
SCRIPT5007: Unable to get value of the property 'add_init': object is null or undefined
Test1.aspx, line 97 character 122
SCRIPT438: Object doesn't support property or method 'Testpm'
Test1.aspx, line 11 character 4
重要な注意: メイン ページに pagemethods がない場合、正常に動作します。この問題から私を助けてください..