Asp.net 调用Json数据的JQuery Ajax函数时获取[object]错误

Asp.net 调用Json数据的JQuery Ajax函数时获取[object]错误,asp.net,jquery,Asp.net,Jquery,我在尝试从asp.net函数读取json数据时遇到以下错误,下面是图像错误 这是jQuery代码 <script type="text/javascript"> $(document).ready(function () { $("#getdata").click(function () { $.ajax({ type: "POST", url: "Default.asp

我在尝试从asp.net函数读取json数据时遇到以下错误,下面是图像错误

这是jQuery代码

<script type="text/javascript">
    $(document).ready(function () {
        $("#getdata").click(function () {
            $.ajax({
                type: "POST",
                url: "Default.aspx/GetData",                   
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                    alert(data.d);
                    // $("#company").html(data.d);
                      console.log(data);
                },
                error: function (error) {
                    alert(error);
                }
            });
        });
    });
</script>

$(文档).ready(函数(){
$(“#获取数据”)。单击(函数(){
$.ajax({
类型:“POST”,
url:“Default.aspx/GetData”,
数据类型:“json”,
contentType:“应用程序/json;字符集=utf-8”,
成功:功能(数据){
警报(数据d);
//$(“#公司”).html(data.d);
控制台日志(数据);
},
错误:函数(错误){
警报(错误);
}
});
});
});
我犯了什么错才得到这个错误。谢谢你的帮助。 从控制台日志中获取此错误,
console.log(错误)

您看到的原因是
data.d
是一个表示返回的JSON文本响应的对象。当您将对象传入
警报
时,它将显示
[对象对象]
。您要查找的内容将是
data.d
的属性。我会在那一行设置一个断点,看看有哪些属性可用。它类似于
data.d.myProperty
,它将包含您试图使用的实际字符串/HTML。

不要使用警报!这只能说明这一点。
由于您的响应是Json对象,请尝试将其Json.stringify或使用console.log查看数据

最后,我发现了问题所在,我必须在asp.net函数之前添加“[WebMethod()]”声明。比如说,

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

这个答案不仅适用于专家,也适用于初学者,谢谢。

你从asp.net方法返回的结果是什么?这不是一个错误,你的console.log在成功中说了什么?这是因为alert()不是一个调试工具,你应该使用console。执行
console.log(JSON.stringify(data.d))
并检查控制台中的内容。尝试
alert(data.d[0]);
我在Success和error部分添加了“console.log(JSON.stringify(data.d)),但没有从Chrome console中得到任何东西,比如Success:function(data){console.log(data);}它没有显示任何内容,我需要在Chrome中进行任何设置吗?ctrl+shift+I:这将打开开发者终端>请打开网络选项卡,然后刷新页面,然后可以看到服务器端响应返回。请检查响应选项卡中的响应,我可以看到Default.aspx页面的相同代码