1

我正在设置一个 jqGrid JSON Web 服务来填充 JQUERY 的 jqGrid 插件。目前我正在用我的代码输出以下内容:

当前: {"total":2,"records":13,"page":1, "ROWS":{"arrUsers":[{"1":1,"4":"bgf","3": "faaff","5":"ASD","2":"asd","7":"1231231233'","6":"123asd"}]}}

jqGrid 所期望的输出是:

期望:

{"page":"1","total":2,"records":"13",       "rows":[{"id":"13","cell":["13","2007-10-06","Client 3","1000.00","0.00","1000.00",null]},{"id":"12","cell":["12","2007-10-06","Client 2","700.00","140.00","840.00",null]},{"id":"11","cell":["11","2007-10-06","Client 1","600.00","120.00","720.00",null]},{"id":"10","cell":["10","2007-10-06","Client 2","100.00","20.00","120.00",null]},{"id":"9","cell":["9","2007-10-06","Client 1","200.00","40.00","240.00",null]},{"id":"8","cell":["8","2007-10-06","Client 3","200.00","0.00","200.00",null]},{"id":"7","cell":["7","2007-10-05","Client 2","120.00","12.00","134.00",null]},{"id":"6","cell":["6","2007-10-05","Client 1","50.00","10.00","60.00",null]},{"id":"5","cell":["5","2007-10-05","Client 3","100.00","0.00","100.00","no tax"]},{"id":"4","cell":["4","2007-10-04","Client 3","150.00","0.00","150.00","no tax"]}],"userdata":{"amount":3220,"tax":342,"total":3564,"name":"Totals:"}}

我的代码编写的格式不正确,任何人都可以提供任何解决建议吗?

谢谢!

代码:

<cfscript>
thestruct["page"] = 1;
thestruct["total"] = 2;
thestruct["records"] = 13;

thestruct.rows["arrUsers"] = arraynew(1);
thestruct.rows.arrUsers[1]["id"] = 1;
thestruct.rows.arrUsers[1]["FirstName"] = "asd";
thestruct.rows.arrUsers[1]["LastName"] = "faaff";
thestruct.rows.arrUsers[1]["DisplayName"] = "bgf";
thestruct.rows.arrUsers[1]["UserName"] = "ASD";
thestruct.rows.arrUsers[1]["UserAccountingCode"] = "123asd";
thestruct.rows.arrUsers[1]["Phone"] = "1231231233'";

</cfscript>



<cfinvoke component="_system.components.JSON" method="encode" data="#thestruct#" returnvariable="result" />

<cfoutput>#result#</cfoutput>
4

2 回答 2

3

这是 Adob​​e 针对查询对象的 JSON 格式返回。这很好,因为整体数据包的大小更小,但在使用所有期望相同格式的框架时,它会变得很有趣。

您要么必须找到一个自定义数据读取器(我为 ExtJs 编写了一个),要么您必须停止使用 JSON 返回格式,并使用 Json.CFC(google it)来生成输出。

于 2009-08-10T10:24:19.563 回答
0

我看到了一些基本问题。一方面,您只需要删除“arrUsers”元素。“行”键应该是一个数组。

其次,在您的“期望”格式中,“page”和“records”的值是字符串(包含数字),但“total”的值是数字。

"page":"1","total":2,"records":"13"

我会尝试将应该是字符串的那些用引号括起来(如果它们需要是 JSON 中的字符串),以便 CF 将它们编码为字符串而不是数字。

除此之外,看起来您并没有尝试匹配完全相同的字段,所以我无法修复它。如果您还有问题,请告诉我。

<cfscript>
    thestruct["page"] = "1";
    thestruct["total"] = 2;
    thestruct["records"] = "13";

    thestruct.rows = arrayNew(1);
    thestruct.rows[1] = structNew();
    thestruct.rows[1]["id"] = 1;
    thestruct.rows[1]["FirstName"] = "asd";
    thestruct.rows[1]["LastName"] = "faaff";
    thestruct.rows[1]["DisplayName"] = "bgf";
    thestruct.rows[1]["UserName"] = "ASD";
    thestruct.rows[1]["UserAccountingCode"] = "123asd";
    thestruct.rows[1]["Phone"] = "1231231233'";
</cfscript>
于 2009-08-11T16:49:30.630 回答