我正在使用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”。它工作正常。有什么想法吗?
答案 0 :(得分:0)
您正在使用所谓的“页面方法”。也就是说,一个带有[WebMethod]属性的静态(Shared)方法。这些只能在.ASPX页面内部工作。它们仅供页面上运行的JavaScript使用。
尝试从方法中删除Shared
,看看它是否效果更好。