Appel ASP.NET PageMethod/WebMethod avec jQuery - retours toute la page
jQuery 1.3.2, ASP.NET 2.0. Faire un appel AJAX vers un PageMethod (WebMethod) retourne la totalité du/de la page entière, au lieu de simplement la réponse. Un point d'arrêt sur la page de la méthode montre qu'il n'est jamais touché. J'ai l' [WebMethod] attribut sur ma méthode, et il est public static, renvoie la chaîne et n'accepte pas de paramètres. J'ai même essayé d'ajouter [ScriptService] en haut de ma classe pour voir si ça aide, mais il n'a pas.
J'ai vu ce post AJAX avec Jquery ASP.NET WebMethod le Retour de Toute la Page qui m'a même symptômes, mais je suis encore avoir un problème. J'ai lu http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/ et je sens que je suis en suivant cet T, mais toujours pas de chance.
Le jQuery appel, je suis en train de faire est:
jQuery.ajax({
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: '{}',
dataType: 'json',
url: 'MyPage.aspx/SomePageMethod',
success: function(result){
alert(result);
}
});
La demande/en-têtes de réponse, comme par Firebug dans FF3, sont comme suit
Response Headers
Server ASP.NET Development Server/8.0.0.0
Date Tue, 24 Feb 2009 18:58:27 GMT
X-AspNet-Version 2.0.50727
Cache-Control private
Content-Type text/html; charset=utf-8
Content-Length 108558
Connection Close
Request Headers
Host localhost:2624
User-Agent Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6
Accept application/json, text/javascript, */*
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 300
Connection keep-alive
Content-Type application/json; charset=utf-8
X-Requested-With XMLHttpRequest
Referer http://localhost:2624/MyApp/MyPage.aspx
Content-Length 2
Cookie ASP.NET_SessionId=g1idhx55b5awyi55fvorj055;
J'ai ajouté un ScriptManager à ma page, juste pour le plaisir, pour voir si ça aide, mais pas de chance là.
Des suggestions?
Vous devez vous connecter pour publier un commentaire.
Savez-vous que les Méthodes de Page fonctionnent correctement? Si vous utilisez le ScriptManager fonctionnent-ils?
Il semble que vous pourriez être manquant un site web.entrée config. Plus précisément la section HttpModules.
J'ai été absent une ligne à partir de mon site web.config:
J'ai rencontré ce problème à nouveau aujourd'hui pour une autre raison: j'avais mal orthographié "application" dans
Et a été d'obtenir une pleine page de réponse au lieu d'un appel à la WebMethod.
Si vous avez essayé tout ça et encore obtenir l'ensemble de la page renvoyée à partir de votre pagemethod, vous voulez vous assurer que vous n'utilisez pas les urls.
Si vous les utilisez, cette astuce peut vous aider à
Ajouter cette ligne sur votre js script avant de faire l'appel:
FriendlyURLs
j'ai dû ajouter cette stackoverflow.com/a/35964882/1876355settings.AutoRedirectMode = RedirectMode.Permanent;
Lancer ceci ici comme une note de côté. J'ai été d'obtenir de l'erreur due à la longueur de mes variables de chaîne de caractères dans mon HTML chaîne et le site que j'ai utilisé pour obtenir mon ajax appelé ressemblait à ça.
Il n'était pas capable d'extraire l' .aspx lien correctement, alors j'ai juste codé en dur ma page web au lieu d'utiliser la ldc var.
La plupart ajax scénarios que j'ai vu ne devrait vraiment appeler un service web ou séparé gestionnaire de scripts, pas une page. C'est extrêmement facile à faire dans .net 3-5, pas si facile à 2-0. Même après que vous comprendre (si) comment ne pas charger l'ensemble de la page, ici, sont autant de raisons de ne pas appeler une page méthode:
1) de La page méthode peut charger moins de choses qu'un plein chargement de la page, mais encore bien plus que vous avez besoin pour un simple appel ajax.
2) Moche séparation des responsabilités. La page est probablement responsable pour le bien de la pose des trucs, pas la logique que vous utilisez dans la méthode ajax.
3) Peut-être vous avez besoin d'une séance d'état, mais qui doit toujours être disponible.
Je suis en train de mettre à jour mes connaissances sur ce sujet ... je vais regarder pour une bonne réponse à cette question dans ce fil, ou je vais poster un la semaine prochaine. Ici est la direction que je vais
1) Envoyer JSON à partir du serveur vers le client, et l'utilisation de javascript pour mettre à jour votre page. - une variété de cadres de le rendre facile à produire JSON à partir du serveur web.
2) JQuery rend les appels ajax, json de la manipulation, et la mise en forme du plaisir, au lieu de douloureux.
Après près de deux heures et après avoir tout essayé, j'ai enfin résolu it.@Marvin Zumbado commentaire m'a aidé.J'ai été absent de la .aspx de mon url.Je sais que ce n'est pas mon meilleur moment en tant que programmeur!
En commentant la ligne suivante dans RouteConfig.cs fonctionne pour moi