1

我正在尝试使用 jQuery 直接调用 ASP.NET AJAX 页面方法。我使用encosia.com作为参考。我的内联 javascript 是

       <script type="text/javascript">
           $(document).ready(function() {
               // Add the page method call as an onclick handler for the div.
               $("#Result").click(function() {                   
                   $.ajax({
                       type: "POST",
                       url: "Default.aspx/GetDate",
                       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);
                       }
                   });
               });
           });

            </script>
       <div id="Result">Click here for the time.</div> 

我的网络方法是

<WebMethod()> _
Public Shared Function GetDate() As String
    Return DateTime.Now.ToString()
End Function

我会使用 FF 并检查发送的 POST,但由于我目前所在的位置只有 IE 7,这有点难以做到。其他相关信息,ASP.net 2.0。有谁知道我做错了什么?


更新

web.config - 预先存在的仍然无法正常工作

<httpModules>
  <remove name="FormsAuthentication" />
  <remove name="PassportAuthentication" />
  <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</httpModules>
4

3 回答 3

5

由于您使用的是 ASP.NET 2.0,因此您需要安装 ASP.NET AJAX Extensions,就像 Joe Enos 提到的那样。我在这里有一些关于必要配置工作的信息:http: //encosia.com/asmx-scriptservice-mistakes-installation-and-configuration/

此外,.d响应的包装器是一个直到 ASP.NET 3.5 才出现的附加功能。因此,即使您的其他一切工作正常,您msg.d也将使用undefinedASP.NET 2.0。省略.d并做那个:

success: function(msg) {
  // Replace the div's content with the page method's return.
  $("#Result").text(msg);
}
于 2012-06-07T01:44:41.817 回答
1

In .NET 2.0, you need to make sure you install the ASP.NET AJAX extensions. In .NET 3.5 and 4.0, the encosia solution works without any modifications.

I don't remember exactly what you need to install, but it might be this.

于 2012-06-06T16:19:34.490 回答
0

您是否检查过您的 web.config 以允许页面方法?

<system.web>
  <httpModules>
    <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  </httpModules>
</system.web>

这里的这篇文章也有类似的问题

于 2012-06-06T15:42:37.927 回答