JSON可以在.aspx文件中调用方法,但不能在.asmx(ASP.NET Web服务)文件中调用

时间:2010-07-03 16:56:16

标签: asp.net jquery json asmx

我正在使用JQuery& JSON(POST)调用webmethod。但是我只能调用位于aspx文件的webmethod而不能调用asmx文件

以下是示例代码

CustomValidate.asmx

Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.ComponentModel


Public Class CustomValidate
Inherits System.Web.Services.WebService

'ACCESS VIA JSON

<System.Web.Services.WebMethod()> _
Public Shared Function AJAX_Test(ByVal date1) As Boolean
...

    Return True
End Function
End Class

Javascript:JQuery JSON

function isDates(source, arguments) {
                var isValidDate;
                $.ajax({
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    url: "CustomValidate.asmx/AJAX_Test",
                    data: '{date1: "' + arguments.Value + '"}',
                    dataType: "json",
                    async: false,
                    success: function(result) {

                        isValidDate = result;
                    },
                    error: function(httpRequest, textStatus, errorThrown) { 
                       alert("status=" + textStatus + ",error=" + errorThrown);
                    } 

                });
                arguments.IsValid = isValidDate;
            }

它始终返回javascript未定义错误。但是如果我将AJAX_Test webmethod放在aspx页面中并将url:“CustomValidate.asmx / AJAX_Test”替换为“mypage.aspx / AJAX_Test”。它工作正常。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您正在使用所谓的“页面方法”。也就是说,一个带有[WebMethod]属性的静态(Shared)方法。这些只能在.ASPX页面内部工作。它们仅供页面上运行的JavaScript使用。

尝试从方法中删除Shared,看看它是否效果更好。