我在方法后面有以下代码,我想使用JScript进行调用
VB代码
<WebMethod>
Public Shared Function SayHello() As String
Return ("Hello JScript")
End Function
ASPX
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript">
function GetMessage() {
var i = PageMethods.SayHello();
document.write(i);
}
setInterval(GetMessage, 500);
</script>
</head>
<body>
</body>
</html>
只有我得到:未捕获ReferenceError:未定义PageMethods
我正在尝试解决此问题,但是没有办法,请帮助。
最佳答案
您在标记中误认为了Microsoft Ajax扩展。
<asp:ScriptManager ID="ScriptManager1"
EnablePageMethods="true"
EnablePartialRendering="true" runat="server" />
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript">
function GetMessage() {
PageMethods.SayHello(callBack);
}
function callBack(result, userContext, methodName){
alert(result);
}
setInterval(GetMessage, 500);
</script>
</head>
<body>
</body>
</html>
尽管这是一个有效的方法,但我更喜欢使用jQuery调用页面方法(不需要MS ajax扩展名):
您需要jQuery库:
<script src="http://code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
function GetMessage() {
$.ajax({
type: "POST",
url: "PageMethods.aspx/SayHello",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(response) {
alert(response.d);
},
failure: function(response) {
alert("Error");
}
});
}
关于javascript - PageMethods未定义错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39972067/