2009-11-09 5 views
0

En utilisant ce tutoriel: http://dotnetslackers.com/articles/ajax/Using-jQuery-with-ASP-NET.aspxASP.net et des questions Jquery

1) Le service Web est appelé, comme Service1.asmx/HelloToYou

Le service Web par défaut dans asp.net ne sera cependant pas charger la page avec cette URL réécrite, à la place je ne peux me référer à elle comme: Service1.asmx? op = HelloToYou

Comment puis-je implémenter la soi-disant réécriture d'url ici? 2) le service Web asp.net par défaut: est-ce le format JSON? il n'est pas clair comment et où je spécifie le format.

Du côté Jquery je fais quelque chose comme:

$.ajax({ 
       type: "POST", 
       url: "WebService/Service1.asmx/HelloToYou", 
       data: "{'name': '" + $('#name').val() + "'}", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function(msg) { 
        AjaxSucceeded(msg); 
       }, 
       error: AjaxFailed 
      }); 

de sorte que le type de contenu est JSON.

Dans asp.net 3.5, dois-je définir spécifiquement le format à JSON ou est-ce JSON par défaut?

Merci!

MISE À JOUR: dans le code de service Web derrière

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Services; 

namespace DummyWebService 
{ 
    /// <summary> 
    /// Summary description for Service1 
    /// </summary> 
    [WebService(Namespace = "http://tempuri.org/")] 
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
    //[System.ComponentModel.ToolboxItem(false)] 
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    [System.Web.Script.Services.ScriptService] 
    public class Service1 : System.Web.Services.WebService 
    { 
     [WebMethod()] 
     public string HelloToYou(string name) 
     { 
      return "Hello " + name; 
     } 

     [WebMethod()] 
     public string sayHello() 
     { 
      return "hello "; 
     } 
    } 

} 
+0

Publiez également le contenu de votre méthode Web HelloToYou. Sinon, nous ne saurons pas quel type de données renvoie cette méthode. –

Répondre

1

Je déclarais une classe C# spécifique pour la réponse json. Si vous définissez l'attribut [Serializable] au-dessus, il sera sérialisé lors de la réponse au client.

Quelque chose comme:

[Serializable] 
public class json_response 
{ 
    public bool response { get; set; } 

    public json_response() { } 

    public json_response(bool response) 
    { 
     this.response = response; 
    } 
} 

puis, dans une méthode, vous pouvez:

[WebMethod()] 
public json_response method() 
{ 
    /* your stuff */ 

    return new json_response(/* your result */); 
} 

par javascript vous pouvez gérer JSON simplement:

... 
success: function(msg) { 
        /* in the msg.d.response you'll find your c# boolean variable */ 
       }, 

... 

Pour votre exemple, juste utilisez une propriété de chaîne dans la classe json_response.

+0

en fait, il s'avère que asp.net à partir de 3.5 sont json par défaut. Ça marche! – sarsnake

-1

Vous devez supprimer quelques lignes au fichier code-behind.