0

我经常看到这条线,但找不到答案:

$.jgrid.useJSON = true;

什么目的?

4

2 回答 2

1

通常我通过以下方式包含 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.jswhich defined $.jgrid,然后你可以设置$.jgrid.useJSON$.jgrid.no_legacy_api并且 jqGrid 的稍后实现jquery.jqGrid.min.js将使用这些设置。

该选项$.jgrid.useJSON$.jgrid.parse用于解析 JSON 字符串 withJSON.parse或 with eval

确切地说,该方法$.jgrid.parse不会经常使用。大多数情况下是相关的:

  1. datastr如果值datastr具有“字符串”类型,则解析输入并且datatype: "jsonstring"
  2. 解析postData.filters(用于本地数据类型和高级搜索的过滤器参数)
  3. 在以下情况下解析来自服务器的 JSON 响应以获取子网格subgridtype: "json"
  4. jqGridImport方法实现内部

因此$.jgrid.useJSON = true;建议使用 ,但它可能不会真正影响程序的性能,因为最重要的 JSON 解析案例通常由 jQuery 内部(通常由jQuery.ajax)完成,而不是由 jqGrid 代码完成。

于 2012-10-04T12:44:18.853 回答
0

调查来源使一切变得干净:

parse : function(jsonString) {
  ...
  return ($.jgrid.useJSON===true && typeof (JSON) === 'object' && typeof (JSON.parse) === 'function') 
    ? JSON.parse(js) 
    : eval('(' + js + ')');
}

所以基本上它说:

要解析 JSON 字符串JSON,请尽可能使用 JavaScript API 而不是eval

于 2012-10-04T12:26:27.797 回答