我经常看到这条线,但找不到答案:
$.jgrid.useJSON = true;
什么目的?
通常我通过以下方式包含 jqGrid
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/themes/redmond/jquery-ui.css" />
<link rel="stylesheet" type="text/css" href="http://www.ok-soft-gmbh.com/jqGrid/jquery.jqGrid-4.4.1/css/ui.jqgrid.css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/jquery-ui.min.js"></script>
<script type="text/javascript" src="http://www.ok-soft-gmbh.com/jqGrid/jquery.jqGrid-4.4.1/js/i18n/grid.locale-en.js"></script>
<script type="text/javascript">
$.jgrid.no_legacy_api = true;
$.jgrid.useJSON = true;
</script>
<script type="text/javascript" src="http://www.ok-soft-gmbh.com/jqGrid/jquery.jqGrid-4.4.1/js/jquery.jqGrid.min.js"></script>
<script type="text/javascript" src="http://www.ok-soft-gmbh.com/jqGrid/json2.js"></script>
所以应该首先包括grid.locale-en.js
which defined $.jgrid
,然后你可以设置$.jgrid.useJSON
,$.jgrid.no_legacy_api
并且 jqGrid 的稍后实现jquery.jqGrid.min.js
将使用这些设置。
该选项$.jgrid.useJSON
将$.jgrid.parse
用于解析 JSON 字符串 withJSON.parse
或 with eval
。
确切地说,该方法$.jgrid.parse
不会经常使用。大多数情况下是相关的:
datastr
如果值datastr
具有“字符串”类型,则解析输入并且datatype: "jsonstring"
postData.filters
(用于本地数据类型和高级搜索的过滤器参数)subgridtype: "json"
jqGridImport
方法实现内部因此$.jgrid.useJSON = true;
建议使用 ,但它可能不会真正影响程序的性能,因为最重要的 JSON 解析案例通常由 jQuery 内部(通常由jQuery.ajax
)完成,而不是由 jqGrid 代码完成。
调查来源使一切变得干净:
parse : function(jsonString) {
...
return ($.jgrid.useJSON===true && typeof (JSON) === 'object' && typeof (JSON.parse) === 'function')
? JSON.parse(js)
: eval('(' + js + ')');
}
所以基本上它说:
要解析 JSON 字符串JSON
,请尽可能使用 JavaScript API 而不是eval