Javascript 无效的JSON响应-C#MVC

Javascript 无效的JSON响应-C#MVC,javascript,c#,html,model-view-controller,datatable,Javascript,C#,Html,Model View Controller,Datatable,我目前正在实现DataTables,无法调试我遇到的此问题。我试图使用ajax.reload(),但得到的JSON响应无效。下面是我加载数据的代码,在创建/更新后调用 function loadData() { $.ajax({ url: "/Home/List", type: "GET", contentType: "application/json;charset=utf-8"

我目前正在实现DataTables,无法调试我遇到的此问题。我试图使用ajax.reload(),但得到的JSON响应无效。下面是我加载数据的代码,在创建/更新后调用

function loadData() {
    $.ajax({
        url: "/Home/List",
        type: "GET",
        contentType: "application/json;charset=utf-8",
        dataType: "json",
        success: function (result) {
            var html = '';
            $.each(result, function (key, item) {
                html += '<tr>';
                html += '<td>' + item.itemName + '</td>';
                html += '<td>' + item.itemType + '</td>';
                html += '<td>' + item.itemPurchased + '</td>';
                html += '<td>' + item.itemSKU + '</td>';
                html += '<td>' + item.itemSize + '</td>';
                html += '<td>' + item.itemColor + '</td>';
                html += '<td>' + "$"+ item.itemPrice + '</td>';
                html += '<td>
                            <a href="#" onclick="return getbyID(' + item.itemID + ')">Edit</a> 
                          | <a href="#" onclick="Delete(' + item.itemID + ')">Delete</a> 
                          | <a href="#" onclick="return getsell(' + item.itemID + ')">Sell</a>
                        </td>';
                html += '</tr>';
            });
            $('.tbody').html(html);
            $('#myTBODY').DataTable().ajax.reload(); 
            
        },
        error: function (errormessage) {
            alert(errormessage.responseText);
        }
    });
}
我知道这是一个有效的JSON,但我无法理解我做错了什么。我在官方的DataTables网站上尝试了所有的方法,但我还是被难倒了。请让我知道,如果我需要包括其他东西(我的列表代码,我的html,等等),我真的很抱歉,如果我没有正确地张贴这个

编辑:主控制器

public JsonResult List() // lists all inventory
{
    return Json(invDB.ListAll(), JsonRequestBehavior.AllowGet);
}
编辑:ListAll函数


public List<Inventory> ListAll()
{
    List<Inventory> lst = new List<Inventory>();
    using (SqlConnection con = new SqlConnection(cd))
    {
        con.Open();
        SqlCommand com = new SqlCommand("SelectItem", con);
        com.CommandType = CommandType.StoredProcedure;
        SqlDataReader rdr = com.ExecuteReader();
        while (rdr.Read())
        {
            lst.Add(new Inventory
            {
                itemID = Convert.ToInt32(rdr["itemID"]),
                itemName = rdr["itemName"].ToString(),
                itemType = rdr["itemType"].ToString(),
                itemPurchased = rdr["itemPurchased"].ToString(),
                itemSKU = rdr["itemSKU"].ToString(),
                itemSize = rdr["itemSize"].ToString(),
                itemColor = rdr["itemColor"].ToString(),
                itemPrice = Convert.ToDouble(rdr["itemPrice"])
            });
        }
        return lst;
    }
}


公共列表ListAll()
{
List lst=新列表();
使用(SqlConnection con=newsqlconnection(cd))
{
con.Open();
SqlCommand com=新的SqlCommand(“SelectItem”,con);
com.CommandType=CommandType.StoredProcess;
SqlDataReader rdr=com.ExecuteReader();
while(rdr.Read())
{
一级添加(新库存)
{
itemID=Convert.ToInt32(rdr[“itemID”]),
itemName=rdr[“itemName”].ToString(),
itemType=rdr[“itemType”]。ToString(),
itemPurchased=rdr[“itemPurchased”].ToString(),
itemSKU=rdr[“itemSKU”].ToString(),
itemSize=rdr[“itemSize”].ToString(),
itemColor=rdr[“itemColor”]。ToString(),
itemPrice=Convert.ToDouble(rdr[“itemPrice”])
});
}
返回lst;
}
}
这是我的网络图像,“列表”返回我在上面发送的内容(我知道的JSON是有效的)。我在网络中找不到任何解释无效数据原因的东西。

您好,您需要从正在处理JSON的控制器发布代码。在我看来,这是一个GET方法,您的控制器被称为Home,您正在调用的操作被称为List。此外,我们还需要更多关于整个部分的细节,比如当你在调试器中转到网络部分时,你会得到什么样的响应?嗨,Oris,我编辑了它,包括控制器代码,它调用的函数,我的网络响应是什么样子的。如果您尝试使用POST而不是GET类型请求来执行此操作,请尝试删除字符集。-contentType:“application/json”我尝试将类型更改为POST,但没有成功。

public List<Inventory> ListAll()
{
    List<Inventory> lst = new List<Inventory>();
    using (SqlConnection con = new SqlConnection(cd))
    {
        con.Open();
        SqlCommand com = new SqlCommand("SelectItem", con);
        com.CommandType = CommandType.StoredProcedure;
        SqlDataReader rdr = com.ExecuteReader();
        while (rdr.Read())
        {
            lst.Add(new Inventory
            {
                itemID = Convert.ToInt32(rdr["itemID"]),
                itemName = rdr["itemName"].ToString(),
                itemType = rdr["itemType"].ToString(),
                itemPurchased = rdr["itemPurchased"].ToString(),
                itemSKU = rdr["itemSKU"].ToString(),
                itemSize = rdr["itemSize"].ToString(),
                itemColor = rdr["itemColor"].ToString(),
                itemPrice = Convert.ToDouble(rdr["itemPrice"])
            });
        }
        return lst;
    }
}