ApiController返回Json结果无法解析,为什么dataType:“json”不起作用?

时间:2012-11-20 03:05:15

标签: javascript asp.net-mvc json

这是我的代码。我遇到的问题是代码jsonVersionList[0]得到一个字符串“[”,实际上我想要解析jsonVersionList作为Json对象,我认为原因是JavaScript将jsonVersionList视为字符串而不是Json对象。请帮帮我。谢谢。

    function ajaxGetSystemTraceLog(jsonRequest) {
            var sUrl = "/api/SysTraceLog";
            $.ajax({
                cache: false,
                type: "POST",
                async: false,
                url: sUrl,
                data: jsonRequest,
                contentType: "application/json",
                dataType: "json",
                success: function (result) {
                    var sHtml = buildLogDiv(JSON.stringify(eval(result)));
                    $("#effect").html(sHtml);
                    showCenter("#effect", false, 0, 0);
                },
                error: function (xhr) {
                    alert(xhr.responseText);
                }
            });
        }

        function buildLogDiv(jsonVersionList) {
            var sHtml = "<table style=\"width:100%;\"><tr><td style=\"width:100%;background-color:#005CE6;\"  align=\"right\"><img onclick=\"hide('#effect', false);\" alt=\"close it\" title=\"close it\" src=\"/content/themes/default/images/cancel.png\" width=\"20\" height=\"20\" /></td></tr>";
            sHtml += "<tr><td  style='text-align:left'>";
            sHtml += jsonVersionList[0];
            sHtml += "</td></tr></table>";
            return sHtml;
        }


public class SysTraceLogController : ApiController
    {
        public string Post(QueryTraceLogRequestModel queryTraceLogReq)
        {
            return "[\"1\",\"2\",\"3\",\"4\"]";
        }
    }

1 个答案:

答案 0 :(得分:0)

由于您指定了json,因为dataType result已经是JavaScript对象,因此您只需将其传递给buildLogDiv

var sHtml = buildLogDiv(result); 

如果出于某种原因,jQuery没有解析您的数据,请使用JSON.parse将其转换为JavaScript对象

var sHtml = buildLogDiv(JSON.parse(result));