2010-05-25 4 views
1

Je souhaite appeler un service Web à l'aide de jQuery.ajax() mais le service Web n'est pas appelé. - Si je change l'url: pour référencer un fichier .ashx, il est appelé mais pas .asmx?webservice n'est pas appelé par jQuery

Voici le code que je utilise:

jQuery.ajax({ 
     type: "POST", 
     url: "/services/CheckUsername.asmx/CheckUsername", // this doesn't get called 
     //url: "/services/CheckUsername.ashx/ProcessRequest", this gets called 
     data: '{ "context": "' + "username" + '"}', 
     contentType: 'application/json; charset=utf-8', 
     dataType: 'json', 

     success: function (msg) { 
      alert("Result: " + msg); 
     }, 
     error: function (XMLHttpRequest, textStatus, errorThrown) { 
      alert("Error: " + textStatus) 
     } 

Le fichier .ashx est appelé, mais un parsererror est retuned parce qu'il est de retour contexte http - comment puis-je modifier cela pour obtenir un type de retour de chaîne à partir d'un webservice ?

Merci,

Répondre

2

essayez de définir l'attribut [ScriptMethod] à votre méthode côté serveur

+0

Merci pour votre réponse, Elangovan. Je ne suis pas sûr où mettre [ScriptMethod] - voulez-vous dire l'ajouter au code webservice C# au-dessus de la méthode? Par exemple, [WebMethod] est au-dessus du nom de la méthode. – Theomax

+0

J'ai utilisé le fil de discussion suivant comme référence: http://stackoverflow.com/questions/1791088/asp-net-scriptmethod-generating-empty-json et ajouté [ScriptMethod (ResponseFormat = ResponseFormat.Json)] mais VS ne le fait pas le reconnaître comme syntaxe correcte? – Theomax

+0

Il devrait être ajouté comme [ScriptMethod] la syntaxe est correcte, mais renvoient l'espace de nom System.Web.Script.Services dans votre fichier asmx. – Elangovan

1

j'ai découvert comment passer le nom d'utilisateur saisi par l'utilisateur au gestionnaire HTTP. Voici le code jQuery:

jQuery.validator.addMethod("UsernameCheck", function (value, element) { 
     var allowed = true; 
     jQuery.ajax({ 
      url: "/services/UsernameCheck.ashx", 
      global: false, 
      cache: false, 
      type: "get", 
      data: "profile_name=" + jQuery("#username").val(), 
      dataType: "text", 
      success: function (msg) { 
       if (msg == 1) { 
        allowed = true; 
       } 
       else { 
        allowed = false; 
       } 
      } 
     }); 
     return allowed; 
    }, "Please enter a valid username"); 
Questions connexes