ASP.NET: не Может назвать Страницу WebMethod с помощью jQuery

Я создал WebMethod в коде - позади файла моей страницы как таковой:

[System.Web.Services.WebMethod()]
public static string Test()
{
    return "TEST";
}

Я создал следующую страницу HTML для проверения его:

<html>
<head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"/></script>
    <script type="text/javascript">
        function test() {            
            $.ajax({
                type: "POST",
                url: "http://localhost/TestApp/TestPage.aspx/Test",
                data: "{}",
                contentType: "application/json; charset=utf-8",
                dataType: "text",
                success: function(msg) {
                    alert(msg.d);
                }
            });
        }
    </script>
</head>
<body>
    <button onclick="test();">Click Me</button>
</body>
</html>

Когда я нажимаю кнопку, Ajax исчерпывает, но ничто не возвращается. Когда я отлаживаю свой код, метод Test() даже не становится названным. Какие-либо идеи?

5
задан Christian Strempfer 14 November 2013 в 10:44
поделиться

5 ответов

попробуйте

url: "TestPage.aspx/Test"

или другой относительный URL-адрес, который попадет на вашу страницу.

Возможно, вы случайно нарушили ту же политику происхождения .

Кроме того, хотя вас еще нет, вы ожидаете объект d: wrapped. Как бы то ни было, вы просто получите строку.

Это должно доставить вас туда, куда вы хотите.

    function test() {            
        $.ajax({
            type: "POST",
            url: "TestPage.aspx/Test",
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(msg) {
                alert(msg.d);
            }
        });
    }
6
ответ дан 14 December 2019 в 01:03
поделиться

Я думаю, что тип данных должен быть "json". Добавьте функцию ошибки, чтобы узнать, какой статус ошибки вы получите, например, 404 не найден, 500 ошибка сервера и т. Д.

2
ответ дан 14 December 2019 в 01:03
поделиться

Я сделал эту функцию javascript для вызова WebMethods с помощью jQuery:

function pageMethod(fn, params, successFn, errorFn) {  
    var pagePath = window.location.pathname;  

    var jsonData = $.toJSON(params);

    $.ajax({  
        type: "POST",  
        url: pagePath + "/" + fn,  
        contentType: "application/json; charset=utf-8",  
        data: jsonData,  
        dataType: "json",  
        success: successFn,  
        error: errorFn  
    });
}

Эта сериализация $ .toJson реализуется плагином jquery.json-1.3.

Как видите, dataType должен быть "json"

1
ответ дан 14 December 2019 в 01:03
поделиться

Если PageMethods правильно зарегистрированы на вашей странице, вы должны иметь возможность вызывать их с помощью зарегистрированного Microsoft объекта под названием PageMethods.

Ваш javascript должен запускаться после того, как страница aspx загрузит все библиотеки Microsoft. Когда они загружены, вы можете вызвать свой PageMethod следующим образом:

PageMethods.Test(function() OnSucceeded{}, function() OnFailed{});

Вот ссылка на лучшие примеры:

http://www.junasoftware.com/blog/using-jquery-ajax-and-page-methods-with-a-asp.net-webservice.aspx

Если вы еще не сделали этого, я настоятельно рекомендую использовать Firebug для отладки этих вызовов на стороне клиента. Firebug предоставит вам всю необходимую информацию, чтобы определить, что на самом деле происходит.

getfirebug.com

0
ответ дан 14 December 2019 в 01:03
поделиться

вам нужно настроить Test() на принятие/разрешение POST

0
ответ дан 14 December 2019 в 01:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: