我在方法后面有以下代码,我想使用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/

10-12 22:05