2013-07-05 4 views
0

Я пытаюсь получить данные из сервера БД SQL и преобразовать его в формат JSON и попытаться показать данные JSON с помощью функции JQuery Ajax, здесь C# код,Jquery Ajax JSON не работает

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); 
    } 
} 

функция GetJSONString (dTable) работает нормально, вот код 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> 

Я включил файл JQuery, пожалуйста, дайте мне знать, если я сделал какую-либо ошибку,

Редакцией: GetJSONString добавил

общественности статической строки GetJSONString (DataTable Dt) { string [] StrDc = новая строка [Dt.Columns.Count]; string HeadStr = string.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(); 
} 

Я добавил ошибок: раздел в Ajax вызова, теперь получает «ошибку [объект Object]» ошибку

ответ

0

Наконец, я нашел то, что был вопрос, я должен добавить "[WebMethod()]" заявления непосредственно перед asp.net функция. Например,

[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); 
     } 
    }