2010-03-22 3 views
1

У меня есть вопрос:Код вызова позади метода от JQuery

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

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

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

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

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

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

ответ

5

There's a full run down here that explains the whole process :)

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

на основе ваших имен методов, возможно, вам понадобится следующее:

[WebMethod (EnableSession = true)] //Allows access to session state 
public void ChangeSession(string strChangeSession) 
{ some stuff... } 
1

Несколько способов сделать это. Как и выше, посмотрите на .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.

2

Вам нужно сделать метод страницы как статические, а также необходимо пометить его как [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

Смежные вопросы