Вызвать код за методом из Jquery - PullRequest
1 голос
/ 22 марта 2010

У меня есть вопрос:

Как я могу вызвать метод codebehind из jquery? У меня есть веб-страница: (ForgetPass.aspx) с соответствующим кодом (ForgetPass.aspx.cs). В коде у меня есть публичный метод:

public void ChangeSession(string strChangeSession)
    { some stuff... }

Когда я работал над MVC, вызывать этот метод было так же просто, как:

$.post("MyPageController/ChangeSession", { strChangeSession: 'yes' });

Но теперь, когда я нахожусь на aspx / C #, я не знаю, как вызвать этот метод из jquery (или, может быть, мне нужно использовать выражение [WebMethod] для кода позади ??)

Спасибо заранее.

Ответы [ 3 ]

5 голосов
/ 22 марта 2010

Здесь есть полный цикл, который объясняет весь процесс:)

Да, вам понадобится [WebMethod], и он также должен быть статичным, прочитайте учебник для объяснения этих битов.

Исходя из названий ваших методов, вам, вероятно, понадобится:

[WebMethod (EnableSession = true)] //Allows access to session state
public void ChangeSession(string strChangeSession)
{ some stuff... }
2 голосов
/ 08 мая 2012

Вам нужно сделать метод страницы статическим, а также пометить его как [WebMethod], чтобы вы могли получить к нему доступ с помощью jquery ajax, например:

var loc = window.location.href;
$.ajax({
     type: 'POST',
      url: loc + "/GetMessage",
      data: "{}",
      contentType: "application/json; charset=utf-8"

    })
    .success(function (response) {
      alert(response.d);

    })
    .error(function (response) {
      alert(response.d);
    });

Получить полный образец здесь: http://www.codegateway.com/2012/05/jquery-call-page-codebehind-method.html

1 голос
/ 22 марта 2010

Несколько способов сделать это. Как и выше, посмотрите на .NET PageMethod / WebMethods. Он покажет вам, как создавать WebMethods и вызывать их из Javascript.

Я отказался от готовых вещей .NET и начал использовать прямые вызовы jQuery ajax. Это то же самое, но с помощью jQuery у вас есть немного больше контроля над вызовом и тем, что он возвращает.

jQuery.ajax({
    type: "POST",
    url: "edit.aspx/yourmethodname",
    data: "{yourmethodparam:" + somevar + "}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(response) {
        alert(response.d);
    }
error: function(err, response) {
    alert("error");
}
});

Это более сложно, но вы получаете больший контроль над тем, какой тип объекта возвращается: JSON или текст.

Помните, response.d "d" - это объект JSON, если вы решите возвращать больше, чем просто простой тип, такой как строка или целое число. Вы можете вернуть объекты, такие как списки и тому подобное. Они будут преобразованы в объекты JSON. Если бы это был простой тип, такой как целое число, то значением было бы просто «response».

Если вы решили пойти сложнее и использовать возвращаемые объекты JSON, посмотрите свойство 'datatype', иногда я обнаруживал .NET, возвращающий строковые объекты, которые нужно было преобразовать в JSON, используя файл json2.js - http://www.json.org/js.html. Это бросило меня в тупик на долгое время. Это хороший сайт, который объясняет JSON, поскольку именно это на самом деле использует PageMethod / WebMethods.

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