Maison  >  Article  >  interface Web  >  jQuery.ajaxWebService demande à WebMethod de gérer Ajax

jQuery.ajaxWebService demande à WebMethod de gérer Ajax

php中世界最好的语言
php中世界最好的语言original
2018-04-03 17:38:381612parcourir

Cette fois, je vais vous présenter quelles sont les précautions pour que jQuery.ajaxWebService demande à WebMethod de gérer Ajax, et jQuery.ajaxWebService pour demander à WebMethod de gérer Ajax. Voici les cas pratiques, prenons un. regarder.

Pour développer un programme ajax sous WebForm, vous devez utiliser un programme de traitement général (*.ashx) ou un service web (*.asmx), et chaque requête ajax doit créer un tel fichier, donc, s'il y a S'il y a trop de programmes ajax dans un projet, un tas de fichiers .ashx ou .asmx sera inévitablement généré. Même si cela ne nuit pas au programme lui-même, l'ensemble de fichiers semble toujours dangereux. Alors pouvons-nous jeter ces .ashx et .asmx et choisir une manière plus concise de réaliser le programme ajax ?

La réponse est oui, c'est-à-dire : WebMethod. (Cette méthode a été déboguée sous la version .net3.5 et présente des problèmes sous .net2.0)

Créez d'abord une méthode statique publique dans le fichier aspx.cs, puis ajoutez l'attribut WebMethod.

[WebMethod]
public static string GetUserName() 
{
//......
}

Si vous souhaitez faire fonctionner la session dans cette méthode, vous devez définir l'attribut EnableSession de WebMethod sur true. C'est-à-dire :

[WebMethod(EnableSession = true)]//或[WebMethod(true)]
public static string GetUserName() 
{
//......
}

Ensuite, nous écrirons un programme ajax pour accéder à ce programme, utilisons jQuery.

$.ajax({
type: "POST",
contentType: "application/json",
url: "WebForm2.aspx/GetUserName",
data: "{}",
dataType: "json",
success: function(){.......}
});

Voici une brève explication de plusieurs paramètres,

type : le type de demande, post doit être utilisé ici. La méthode WebMethod accepte uniquement les requêtes de type publication.

ContentType : Type d'encodage du contenu lors de l'envoi d'informations au serveur. Nous devons utiliser application/json ici.

url : Le chemin d'accès au gestionnaire côté serveur demandé, au format "nom de fichier (y compris le suffixe)/nom de méthode"

données : liste de paramètres. Notez que les paramètres ici doivent être des chaînes au format json, n'oubliez pas d'être au format chaîne, tel que : "{aa:11,bb:22,cc:33, ...}". Si

ce que vous écrivez n'est pas une chaîne, alors jquery le sérialisera en chaîne, donc ce qui est reçu côté serveur n'est pas au format json et ne peut pas être vide même s'il n'y a pas de paramètres. il doit être écrit sous la forme " {} », comme dans l'exemple ci-dessus.

Beaucoup de gens échouent et c'est la raison.

dataType : type de données renvoyé par le serveur. Ce doit être json, tout le reste n'est pas valide. Étant donné que le service Web renvoie les données au format json, sa forme est : {"d":......."}.

Succès : Fonction de rappel une fois la demande réussie. Vous pouvez faire ce que vous voulez avec les données renvoyées ici.

Nous pouvons voir que certaines valeurs de paramètres sont fixes, donc du point de vue de la réutilisabilité, nous pouvons créer une extension pour jquery et faire une simple encapsulation de la fonction ci-dessus :

Nous créons un fichier de script appelé jquery.extend.js. Écrivez une méthode appelée ajaxWebService à l'intérieur (car webmethod est en fait WebService, donc cette méthode est également valable pour demander *.asmx). Le code est le suivant :

/// <summary>
/// jQuery原型扩展,重新封装Ajax请求WebServeice
/// </summary>
/// <param name="url" type="String">
/// 处理请求的地址
///</param>
/// <param name="dataMap" type="String">
/// 参数,json格式的字符串
///</param>
/// <param name="fnSuccess" type="Function">
/// 请求成功后的回调函数
///</param>
$.ajaxWebService = function(url, dataMap, fnSuccess) {
$.ajax({
type: "POST",
contentType: "application/json",
url: url,
data: dataMap,
dataType: "json",
success: fnSuccess
});
}

D'accord, nous pouvons donc demander la méthode webmethod). C'est écrit comme ceci :

$.ajaxWebService("WebForm2.aspx/GetUserName", "{}", function(result) {......});

Enfin : S'il y a beaucoup de programmes ajax dans votre projet (cette situation est possible, j'ai fait un site web, c'est un SNS, tout le processus est ajax , presque toutes les opérations (en utilisant ajax), si vous estimez que l'écriture des méthodes WebMethod dans chaque page aspx est très fragmentée, vous pouvez alors créer une page spéciale (telle que : WebMethods.aspx) pour la stocker.

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

Comment configurer une requête Ajax pour ouvrir une nouvelle fenêtre immédiatement après le succès

Ouvrir un nouvelle fenêtre dans la réponse à la requête Ajax Comment gérer l'interception

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn