Вызов метода Ajax - PullRequest
       14

Вызов метода Ajax

16 голосов
/ 22 декабря 2010

Я пытаюсь вызвать простой код в моем коде, используя Jquery с Ajax.Но я получаю 404 не найденное исключение каждый раз.К сожалению, это решение для веб-форм.Поэтому у меня нет всех преимуществ MVC: (

Он попадает в метод javascript и выдает предупреждение, но не входит в мой метод c #. Мой предыдущий опыт использования этого метода Jquery был в MVCсовместим ли он с сайтами веб-форм?

Мой Javascript:

$(document).ready(function() {

              $('#btn_<%=UserStuff.tag %>').click(function() {                    

                  var value = $('#<%#Eval("tag") %>twink').val();
                  something(value);                    
              });
          });


          function something(theval) {

            alert(theval);

              $.ajax({
                  type: "POST",
                  url: "/Default.aspx/MyMethod?something=" + theval,
                  data: "{}",
                  contentType: "application/json; charset=utf-8",
                  dataType: "json",
                  success: function(msg) {
                      alert(msg);
                  }
              });
          }
}

А мой код C #:

   public JsonResult MyMethod(string something)
{
    JsonResult ret = new JsonResult();      

    return ret;
}

Заранее спасибо.

1 Ответ

39 голосов
/ 22 декабря 2010

Ваш метод возвращает JsonResult. Это специфично для MVC, и вы не можете использовать его в приложении веб-форм.

Если вы хотите вызывать методы из кода в классическом приложении WebForms, вы можете использовать PageMethods :

[WebMethod]
public static string GetDate()
{
    return DateTime.Now.ToString();
}

А затем вызвать метод:

$.ajax({
    type: 'POST',
    url: 'PageName.aspx/GetDate',
    data: '{ }',
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    success: function(msg) {
        // Do something interesting here.
    }
});

А вот полный рабочий пример, который я написал для вас:

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Services" %>
<script type="text/C#" runat="server">
    [WebMethod]
    public static string SayHello(string name)
    {
        return "Hello " + name;
    }
</script>
<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script type="text/javascript" src="/scripts/jquery-1.4.1.js"></script>
    <script type="text/javascript">
        $(function () {
            $.ajax({
                type: 'POST',
                url: 'default.aspx/sayhello',
                data: JSON.stringify({ name: 'John' }),
                contentType: 'application/json; charset=utf-8',
                dataType: 'json',
                success: function (msg) {
                    // Notice that msg.d is used to retrieve the result object
                    alert(msg.d);
                }
            });
        });
    </script>
</head>
<body>
    <form id="Form1" runat="server">

    </form>
</body>
</html>

PageMethods не ограничены простыми типами аргументов. Вы можете использовать любой тип ввода и вывода, он будет автоматически сериализован в JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...