2010-07-03 76 views
2

我正在使用JQuery & JSON(POST)來調用webmethod。但是我只能撥打的WebMethod位於aspx文件,但不是在ASMX文件JSON可以調用.aspx文件中的方法,但不能在.asmx(ASP.NET Web服務)文件中調用方法

下面是示例代碼

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

您使用的是「頁面方法」。也就是說,一個具有[WebMethod]屬性的靜態(共享)方法。這些只能在.ASPX頁面中使用。它們僅用於在頁面上運行的JavaScript。

嘗試從該方法中刪除Shared,看看它是否更好。

+0

很好的解釋。我現在很清楚。謝謝 – Alfred 2010-07-07 12:18:52