Question

J'ai une méthode Web simple sur une application asp.net 2.0 (en utilisant les extensions 1.0 et non les extensions ajax 3.5). J'essaie d'appeler la méthode à partir de jQuery et lorsque je le fais comme le montrent d'innombrables exemples sur Internet et ici sur SO, un message d'erreur de serveur interne est renvoyé.

Voici mon code actuel:

[WebMethod]
[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
public string Select(string login)
{
    UserProfile profile = UserProfile.GetUserProfile(login);

    return "{ FirstName: '" + profile.FirstName + "', " +
             "LastName: '" + profile.LastName + "', " +
             "EmailAddress: '" + profile.EmailAddress + "', " +
             "PhoneNumber: '" + profile.PhoneNumber + "' }";
 }

Et maintenant, le jQuery:

$.ajax({
    type: "POST",
    url: "Services/ProfileService.asmx/Select",
    dataType: "json",
    data: "{'login':'DOMAIN%5CUSER1'}",
    contentType: "application/json; charset=utf-8",
    success: function(msg){ alert(msg); },
    error: function(xhr){ alert(xhr.statusText);}     
});

Le service Web est également doté de l'attribut [ScriptService] . Si je commente le type de contenu, modifie le type de données en texte et modifie les données en chaîne de requête (nom = valeur), le code XML est renvoyé correctement.

Où vais-je mal?

UPDATE: J'utilise jQuery v1.3.1 et je teste à la fois dans IE6 et Firefox 3. Je reçois des résultats cohérents.

Était-ce utile?

La solution

Ce fut une erreur stupide de ma part. Le problème a été résolu. Bien que j'aie inclus la référence aux extensions AJAX, j'ai oublié de réécrire le gestionnaire httphandler pour les services ASMX dans la classe ScriptHandlerFactory.

Ajouter ceci a résolu le problème.

Depuis que j'ai reçu des courriels me demandant des exemples ou comment j'ai résolu le problème, j'ai écrit un article sur mon blog sur la façon de faire cette soupe aux noix.

http: //randomactsofcoding.blogspot .com / 2009/03 / jquery-json-and-asmx-20-services.html

Autres conseils

Oui. Vous devez abandonner ASMX pour WCF. Recommandation de Microsoft eux-mêmes. Je suppose que cela ne vous aidera pas dans votre problème, mais vous feriez bien de considérer WCF ou au moins de commencer à regarder cette technologie.

J'ai eu le même problème mais il a été corrigé lorsque j'ai ajouté ce qui suit dans le fichier de code

[System.Web.Script.Services.ScriptService]

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top