2010-03-22 4 views
1

J'ai cette question:Code d'appel méthode derrière de Jquery

Comment appeler une méthode codebehind de jquery? J'ai une page web: (ForgetPass.aspx) avec son codebehind respectif (ForgetPass.aspx.cs). Sur la codebehind j'ai une méthode publique:

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

Quand je travaillais sur MVC, appelant cette méthode était aussi simple que:

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

Mais maintenant que je suis sur ASPX/C# I don ne sais pas comment appeler cette méthode de jquery (ou peut-être que j'ai besoin d'utiliser la clause [WebMethod] sur le codebehind ??)

Merci d'avance.

Répondre

5

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

Oui, vous aurez besoin [WebMethod] et il faudra être statique ainsi, lire le tutoriel pour une explication sur ces bits.

Sur la base de vos noms de méthode, vous aurez probablement besoin ceci:

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

Plusieurs façons d'y parvenir. Comme ci-dessus, regardez le .NET PageMethod/WebMethods. Il vous montrera comment construire les WebMethods et les appeler à partir de Javascript.

Je me suis éloigné des choses prédéfinies .NET et je suis allé avec des appels ajax jQuery. C'est la même chose, mais en utilisant jQuery vous avez un peu plus de contrôle sur l'appel et ce qu'il retourne.

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"); 
} 
}); 

Il est plus complexe, mais vous avez plus de contrôle sur ce type d'objet est retourné, JSON ou texte. N'oubliez pas, response.d le "d" est l'objet JSON si vous décidez de renvoyer plus qu'un simple type, comme une chaîne ou un entier. Vous pouvez retourner des objets comme des listes et autres. Ceux-ci seront convertis en objets JSON. Si c'était un type simple comme un entier, alors juste "réponse" serait la valeur. Si vous décidez d'aller plus complexe et d'utiliser des objets de retour JSON, regardez la propriété 'datatype', parfois je trouve .NET renvoyant des objets chaîne qui ont dû être convertis en JSON en utilisant le fichier json2.js - http://www.json.org/js.html. Cela m'a jeté une boucle pendant longtemps. C'est un bon site qui expliquera JSON, car c'est ce que les méthodes PageMethod/WebMethod utilisent vraiment.

2

Vous devez faire la méthode de page statique et doivent également marquer comme [WebMethod] de sorte que vous pouvez y accéder en utilisant jquery ajax comme:

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); 
    }); 

Obtenez échantillon complet ici: http://www.codegateway.com/2012/05/jquery-call-page-codebehind-method.html

Questions connexes