2013-07-05 3 views
0

Je suis en train de récupérer des données à partir du serveur SQL DB et le convertir en JSON et essayer de montrer les données JSON en utilisant la fonction JQuery Ajax, voici le code C#,Jquery Ajax JSON lecture de données ne fonctionne pas

C#

public String GetData() 
{ 
    try 
    { 
     String strjson;    
     string connectionstring = ConfigurationManager.ConnectionStrings["ConString"].ConnectionString; 
     SqlConnection Con = new SqlConnection(connectionstring); 
     DataSet DS = new DataSet(); 
     String CmdText = "Select Compname,compadd1,compadd2,compemail from company where [email protected]"; 
     SqlCommand cmd = new SqlCommand(CmdText, Con); 
     cmd.Parameters.Add("@cmpid", SqlDbType.Int).Value = 22; 
     Con.Open(); 
     SqlDataAdapter DA = new SqlDataAdapter(cmd); 
     DA.Fill(DS);   
     DataTable dTable = DS.Tables[0]; 
     strjson = GetJSONString(dTable); 
     Con.Close(); 
     return strjson; 
    } 
    catch (Exception ex) 
    { 
     throw new System.Exception("Error In Get Data" + ex.Message); 
    } 
} 

la GetJSONString fonction (dTable) fonctionne bien, voici le code jQuery,

jQuery & HTML

<form id="form1" runat="server"> 
    <div> 
     <h1>JSON Sample</h1> 
     <button id="getdata">Get Data</button> 
     <div id="company"></div> 
<%--  <asp:Button ID="aspbutton" runat="server" Text=".Net Call" OnClick="btnOn_Click" /> 
     <asp:GridView runat="server" ID="grdview"></asp:GridView>--%> 
    </div> 
    <script type="text/javascript">   
     $(document).ready(function() { 
      $("#getdata").click(function() {     
       $.ajax({ 
        type: "POST", 
        contentType: "application/json; charset=utf-8", 
        data: "", 
        url: "Default.aspx/GetData", 
        dataType: "json", 
        success: function (data) { 
         alert(data.d); 
         $("#company").html(data.d); 
        } 
       }); 
      }); 
     }); 
    </script> 
    </form> 

J'ai inclus le fichier jQuery, s'il vous plaît laissez-moi savoir si je l'ai fait une erreur,

ÉDITÉE: GetJSONString ajouté

public static string GetJSONString (DataTable Dt) { string [] StrDc = nouvelle chaîne [Dt.Columns.Count]; chaîne HeadStr = chaîne.Empty;

for (int i = 0; i < Dt.Columns.Count; i++) 
    { 
     StrDc[i] = Dt.Columns[i].Caption; 
     HeadStr += "\"" + StrDc[i] + "\" : \"" + StrDc[i] + i.ToString() + "¾" + "\","; 
    } 


    HeadStr = HeadStr.Substring(0, HeadStr.Length - 1); 


    StringBuilder Sb = new StringBuilder(); 
    Sb.Append("{\"" + Dt.TableName + "\" : ["); 


    for (int i = 0; i < Dt.Rows.Count; i++) 
    { 
     string TempStr = HeadStr; 
     Sb.Append("{"); 


     for (int j = 0; j < Dt.Columns.Count; j++) 
     { 
      switch (Dt.Columns[j].DataType.ToString()) 
      { 
       case "System.DateTime": 
        DateTime cv = (DateTime)Dt.Rows[i][j]; 
        TempStr = TempStr.Replace(Dt.Columns[j] + j.ToString() + "¾", cv.Year + "," + (cv.Month - 1) + "," + cv.Day + "," + cv.Hour + "," + cv.Minute + "," + cv.Second + "," + cv.Millisecond); 
        break; 


       case "System.Boolean": 
        TempStr = TempStr.Replace(Dt.Columns[j] + j.ToString() + "¾", Dt.Rows[i][j].ToString().ToLower()); 
        break; 


       default: 
        string str = Dt.Rows[i][j].ToString(); 
        str = str.Replace("\n", "\\\\n"); 
        str = str.Replace("\\", "\\\\\\\\"); 
        str = str.Replace("\"", "ppp"); 
        str = str.Replace("'", "\\\'"); 
        str = str.Replace("\r", "\\\\r"); 


        TempStr = TempStr.Replace(Dt.Columns[j] + j.ToString() + "¾", str); 
        break; 
      } 
     } 


     Sb.Append(TempStr + "},"); 
    } 


    Sb = new StringBuilder(Sb.ToString().Substring(0, Sb.ToString().Length - 1)); 
    Sb.Append("]}"); 


    return Sb.ToString(); 
} 

J'ajouté erreur: section appel Ajax, maintenant obtenir l'erreur « erreur; [object Object] »

Répondre

0

Enfin, je trouve ce qui était la question, je dois ajouter "[WebMethod()]" déclaration juste avant la Fonction asp.net. Par exemple,

[WebMethod()] 
    public static string GetData() 
    { 

     try 
     { 
      string strjson; 
      string connectionstring = ConfigurationManager.ConnectionStrings["ConString"].ConnectionString; 
      SqlConnection Con = new SqlConnection(connectionstring); 
      DataSet DS = new DataSet(); 
      String CmdText = "Select Compname,compadd1,compadd2,compemail from aas_company where [email protected]"; 
      SqlCommand cmd = new SqlCommand(CmdText, Con); 
      cmd.Parameters.Add("@cmpid", SqlDbType.Int).Value = 22; 
      Con.Open(); 
      SqlDataAdapter DA = new SqlDataAdapter(cmd); 
      DA.Fill(DS); 
      DataTable dTable = DS.Tables[0]; 
      strjson = GetJSONString(dTable); 
      Con.Close();    
      return strjson; 
     } 
     catch (Exception ex) 
     { 
      throw new System.Exception("Error In Get Data" + ex.Message); 
     } 
    }