0

SQL サーバー DB からデータを取得して JSON に変換し、JQuery Ajax 関数を使用して json データを表示しようとしています。ここに C# コードがあります。

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 compid=@cmpid";
        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が追加されました

public static string GetJSONString(DataTable Dt) { string[] StrDc = new string[Dt.Columns.Count]; 文字列 HeadStr = 文字列.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 呼び出しに error: セクションを追加すると、"error; [object Object]" というエラーが表示されるようになりました

4

1 に答える 1