JSON может вызывать метод в файле .aspx, но не в файле .asmx (веб-служба ASP.NET) - PullRequest
2 голосов
/ 03 июля 2010

Я использую JQuery & JSON (POST) для вызова webmethod.Однако я могу вызвать только webmethod, расположенный в файле aspx, но не в файле 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 на страницу aspx и заменим URL-адрес: "CustomValidate.asmx / AJAX_Test" на "mypage.aspx / AJAX_Test".Работает нормально.Есть идеи?

1 Ответ

0 голосов
/ 06 июля 2010

Вы используете так называемый «метод страницы». То есть статический (Shared) метод с атрибутом [WebMethod]. Они работают только внутри страницы .ASPX. Они предназначены для использования только JavaScript, запущенным на странице.

Попробуйте удалить Shared из метода и посмотрите, работает ли он лучше.

...