我正在做类似的事情:

 $.ajax({
    type: 'POST',
    dataType: 'json',
    contentType: 'application/json',
    url: '/Modal/getModalInfo',
    data: '{"machine":"' + machine + '"}',
    success: function (response) {
        modalData = response;
        fillModal();
    }
});


如果我调试C#并检查将响应发送回JS,则数据看起来完全正确。

Ajax调用中的响应只是:

response = Object {}


完全是空的我正在以与正确执行完全相同的方式进行其他几个Ajax调用。

编辑:

就C#返回Ajax而言:

        try {
            return Json(allInfo, JsonRequestBehavior.AllowGet);
        }
        catch (Exception ex) {
            return new JsonResult();
        }


“ allinfo”看起来像:

    AllTheInfo allInfo = new AllTheInfo();


    class AllTheInfo {
    List<DownTimes> dList;

    internal List<DownTimes> DList {
        get { return dList; }
        set { dList = value; }
    }
    List<PartsMade> pList;

    internal List<PartsMade> PList {
        get { return pList; }
        set { pList = value; }
    }

    PartsTotals pTotal;

    internal PartsTotals PTotal {
        get { return pTotal; }
        set { pTotal = value; }
    }
}


在该类中引用的类是我创建的其他自定义类。

编辑:我也修改了我的Ajax调用以捕获错误,而且似乎也没有任何错误,只是一个空的成功响应。

再次编辑:现在,我尝试使用以下命令将要返回的对象转换为C#中的Json字符串:

        string jsontext = "";
        try {
            jsontext = JsonConvert.SerializeObject(allInfo);

            System.IO.File.WriteAllText(path, jsontext);
        }
        catch (Exception ex) {
            Console.WriteLine(ex.Message);
        }


现在的问题是对JsonConvert的调用已成功完成(未捕获任何错误),但字符串等于“ {}”

我不确定为什么会解释为成功。

最佳答案

我过去曾见过这种情况,当时客户端由于语法错误,响应中的其他文本(例如HTML标记等)而无法解析从服务器返回的JSON。最好的选择是使用Fiddler(http://www.telerik.com/fiddler)或类似的代理之类的东西来准确查看响应中返回的内容(不仅是您从C#端返回的内容,因为可能还有其他过滤器,模块等会影响输出)离开服务器端方法后)。

10-05 20:47
查看更多