2009-07-02 4 views
0

j'écris une méthode sur ma page qui renvoient un XMLDocument.This est ma méthode:Comment obtenir XML à partir d'Ajax jQuery au lieu de JSON

[System.Web.Services.WebMethod()] 
public static System.Xml.XmlDocument MyGet() 
{ 
    string cnn=System.Configuration.ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString.ToString(); 
    SqlConnection cn = new SqlConnection(cnn); 
    SqlCommand cmd = new SqlCommand("select * from region", cn); 
    SqlDataAdapter da = new SqlDataAdapter(cmd); 
    cn.Open(); 
    DataSet dt = new DataSet(); 
    da.Fill(dt); 
    XmlDocument xdoc=new XmlDocument(); 
    xdoc.LoadXml(dt.GetXml()); 
    return xdoc; 
} 

ce qui est mon code jQuery Ajax:

  $.ajax({ 
      type: "POST", 
      url: "Default2.aspx/MyGet", 
      data: "{}", 
      dataType: "xml", 
      success: function(result) { 
       $(result).find("Table").each(function() { 
        alert($(this).find("RegionID").text()); 
       }); 

      } 

mais cela ne fonctionne pas. Si j'écris la méthode MyGet dans Web Service, cela fonctionne très bien. où est le problème? merci beaucoup

Répondre

2

Essayez d'ajouter l'attribut suivant à votre opération de service:

[ScriptMethod(ResponseFormat=ResponseFormat.Xml)] 
0

je vous suggère de vous débarrasser de {} dans votre paramètre de données. Il est probable que le sérialiseur pense que vous voulez revenir en arrière, pas en XML.

0

Ma suggestion est d'essayer les plugins Jquery qui convertit xml en json. Votre problème est avec Jquery api pas avec asp.net.

0

Quelques suggestions:

1) ne doit pas le "{}" être sans les guillemets?

2) Vous pouvez essayer d'alerte (réponse); à l'intérieur de votre fonction de succès pour voir quel genre de données jQuery pense avoir. Ce pourrait être du texte .. J'ai déjà eu des types de données inattendus avec jQuery.

3) Vous pouvez essayer $ ("Table", résultat) au lieu de $ (résultat) .Find ("Table")

Hope this helps

Questions connexes