Справка AJAX WebMethod - PullRequest
       9

Справка AJAX WebMethod

1 голос
/ 17 ноября 2010

Я пытался получить доступ к .NET WebMethod из jQuery AJAX, но не могу заставить его работать. Я прочитал все, что могу найти на SO и других сайтах, и, похоже, ничего не работает.

Мой код C # такой

[WebMethod]
public static string TestAjax()
{
    return "Hello World";
}

и код JavaScript

$.ajax({
    type: "POST",
    url: "ManageEvent.aspx/TestAjax",
    data: "{}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg)
    {
        alert(msg.d);
    },
    error: function(result)
    {
        alert("error: " + result.status);
    }
});

Конечной целью было сделать отправку формы в базу данных с использованием AJAX без перезагрузки всей страницы, но в настоящий момент я даже не могу заставить ее вернуть строку. Когда я нажимаю кнопку ввода, к которой прикреплен этот код, вызывается код ошибки, дающий статус 12030. Но когда я тестирую код за пределами Visual Studio, я все равно выдаю ошибку, но со статусом 200. Есть ли что-нибудь явно очевидное в моем код, который вызвал бы эту ошибку?

Спасибо за тонну

EDIT:

Я заставил WebMethod работать с использованием ScriptManager ASP.NET Ajax, установив ASP.NET AJAX 1.0 и вызвав мой Javascript

PageMethods.TextAjax(OnSuccess, OnFail);

, где OnSuccess и OnFail являются функциями. Однако я все еще не могу заставить работать JJuery AJAX. Он по-прежнему выдает ошибку 12030.

Ответы [ 3 ]

1 голос
/ 17 ноября 2010

Я не вижу ничего плохого в вашем коде.Установите FireBug и посмотрите, в чем проблема с вашей настройкой.Вот полный рабочий пример:

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Services" %>

<script type="text/C#" runat="server">
    [WebMethod]
    public static string TestAjax()
    {
        return "Hello World";
    }
</script>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head id="Head1" runat="server">
    <title></title>
    <script type="text/javascript" src="scripts/jquery-1.4.1.js"></script>
    <script type="text/javascript">
        $.ajax({
            type: "POST",
            url: "Default.aspx/TestAjax",
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                alert(msg.d);
            },
            error: function (result) {
                alert("error: " + result.status);
            }
        });
    </script>
</head>
<body>
    <form id="Form1" runat="server">
    </form>
</body>
</html>
0 голосов
/ 28 сентября 2011

В веб-службе отсутствовал тег [ScriptService], который исправил его после установки ASP.NET AJAX

0 голосов
/ 17 ноября 2010

Это все выглядит правильно. Ваш класс выглядит так:

public partial class _Default : Page 
{
[WebMethod]
public static string TestAjax()
{
    return "Hello World";
}

}
...