Comment appeler la méthode c# en jquery?
Je suis à l'aide d'un graphique qui doit obtenir des informations à partir de c# pour le traçage du graphe . Je suis en utilisant Json pour le retour des valeurs de c# à jquery. Mais il ne m'aide pas. Merci à l'avance. Pouvez-vous s'il vous plaît trouver l'endroit où je suis allé mal..?
c'est mon code aspx
script type="text/javascript">
$(document).ready(function () {
var source = {};
$.ajax({
type: 'POST',
dataType: 'json',
url: "Default.aspx/getall",
contentType: 'application/json; charset=utf-8',
cache: false,
success: function (response) {
source = $.parseJSON(response.d);
},
error: function (err) {
alert('Error');
}
});
Et c'est mon cs code
public class sampledata
{
public string Day { get; set; }
public int Keith { get; set; }
public int Erica { get; set; }
public int George { get; set; }
}
public partial class _Default : System.Web.UI.Page
{
List<sampledata> s = new List<sampledata>();
protected void Page_Load(object sender, EventArgs e)
{
s.Add(new sampledata { Day = "monday", Keith = 20, Erica = 15, George = 25 });
s.Add(new sampledata { Day = "tuesday", Keith = 25, Erica = 20, George = 35 });
Session["data"] = s;
}
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static List<sampledata> getall()
{
List<sampledata> data = (List<sampledata>)HttpContext.Current.Session["data"];
return data;
}
}
- Avez-vous essayé
console.log(response)
de succès? - Je pense que vous êtes à l'appel de cette méthode comme un service web. vous avez besoin d'ajouter de service web pour appeler getall
- msdn.microsoft.com/en-us/library/...
Vous devez vous connecter pour publier un commentaire.
J'ai testé votre code. Tout semble aller pour le mieux, sauf que je sérialisé la Liste dans une chaîne et retourné.
code serveur:
et le résultat est
Vous pouvez l'améliorer à l'aide de la sortie en tant que source pour votre graphique.
Au lieu de l'ajax de publication,vous pouvez utiliser PageMethods
En C# page
Dans la page aspx
et pour l'utilisation de PageMethodsyou également avoir besoin de l'ajouter dans votre balise de formulaire
Si vous ne voulez pas compter sur Microsoft AJAX mise en œuvre (le
WebMethodAttribute
,ScriptManager
, d'avoir à vous soucier de ce que.d
propriété de la réponse, etc.), vous pouvez faire de belles nettoyer JSON appels à l'aide de ASHX gestionnaires. Que vous avez à faire un peu de travail vous-même, mais vous sortez de sous WebForms du pouce un peu en faisant plus traditionnel AJAX.Pour votre exemple, le C# pièce serait comme suit (la note la
IRequiresSessionState
mise en œuvre, ce qui rend votre session est disponible):Votre appel javascript serait juste un appel à cette
something.ashx
fichier:Vous n'avez pas de paramètres POST, mais si vous l'avez fait, vous avez juste à les inclure dans votre appel, et de les lire directement à partir de la
Request
dans votre gestionnaire de:.done(function(result))
'sresult
variable.done
fonction du paramètre est une fonction qui contient le résultat de l'appel AJAX, dans le type que vous avez demandé. Dans cet exemple, ledataType
champ estjson
, ce qui signifie que jQuery sera assez intelligent pour regarder le résultat à partir du serveur, qui est au format JSON, et il vous permet de convertir à l'objet que le JSON représente. Par exemple, si votre serveur envoie{"name":"John"}
, puisresult
est un objet javascript{name: "John"}
. Voir la doc pour beaucoup de façons d'utiliser AJAX de jQuery.json
réponse? J'ai effectivement trouvé cette réponse unique et soigné, donc je suis en train de creuser profondément en elle. désolé si je suis nerd.JsonConvert.SerializeObject
méthode, qui fait partie de la JSON.NET la bibliothèque, le plus commun librairie JSON dans .NET, et puis il écrit le JSON et le type de contenu directement à la réponse. ASP.NET MVC est une méthode intégrée (laJson
méthode) pour écrire JSON pour la réponse. D'autres serveur cadres ont leur propre façon de le faire (ce que vous auriez à regarder la doc de PHP ou de Rails, ou tout autre chose, de trouver la meilleure façon de le faire.