2

我尝试在 asp.net 网站(使用 vb.net 2.0)中使用 Ajax(通过 jQuery)。

这是我的 .aspx 页面(ajax.aspx):

    <%@ Page Language="vb" AutoEventWireup="true" CodeFile="ajax.aspx.vb" Inherits="_Ajax" %>

<!DOCTYPE html>
<html>
<head>
  <title>Calling page methods with jQuery</title>
  <style type="text/css">
    #Result {
      cursor: pointer;
    }
  </style>
</head>
<body>
  <div id="Result">Click here for the time.</div>

  <script src="jquery-1.8.3.js"></script>
  <script>
      $('#Result').click(function () {
          $.ajax({
              type: "POST",
              url: "ajax.aspx/HelloWorld",
              data: "{}",
              contentType: "application/json; charset=utf-8",
              dataType: "json",
              success: function (msg) {
                  // Replace the div's content with the page method's return.
                  $("#Result").text(msg.d);
              },
              error: function (xhr, ajaxOptions, thrownError) {
                  alert("xhr.responseText= " + xhr.responseText);
                  alert("xhr.responseStatus= " + xhr.responseStatus);
                  alert("thrownError= " + thrownError);
              }
          });
      });
  </script>
</body>
</html>

这是代码隐藏文件(ajax.aspx.vb):

    Imports System
Imports System.Web.Services

Public Class _Ajax
    Inherits System.Web.UI.Page

    Protected Sub Page_Load()

    End Sub

    <WebMethod()> _
    Public Shared Function HelloWorld() As String
        Return "Hello: "
    End Function

End Class

当我点击我的 div 时,ajax 调用失败:

System.ArgumentException:未知的 Web 方法 HelloWorld。

[编辑]

多次刷新重启浏览器后,发现web方法!

我现在尝试添加一个新的网络方法,但我再次收到错误“未知的网络方法”。

我认为这是一个缓存问题。

你知道如何强制禁用这种缓存吗?

4

2 回答 2

1

最后,paritosh 的回答很有用。

我必须使用 ASP.NET 2.0 在 Web 服务器上安装 ASP.NET Ajax 1.0。

这是链接: http ://www.microsoft.com/en-us/download/details.aspx?id=883

然后,直到我重新启动ISS网站才找到web方法,我不知道为什么,但重新启动后就可以了。

感谢您的回答。

于 2013-01-16T10:14:07.830 回答
0

改变

<%@ Page Language="vb" AutoEventWireup="true" CodeFile="ajax.aspx.vb"
 Inherits="_Ajax" %>

 <%@ Page Language="vb" AutoEventWireup="true" CodeFile="ajax.aspx.vb"
 Inherits="_Ajax" ScriptManager.EnablePageMethods="true" %>

这将使该页面上的所有 Web 方法对 JavaScript 客户端可见。

于 2013-01-14T11:26:47.773 回答