【问题标题】:XML Not well formed in Firefox getting xml response from serverXML 在 Firefox 中格式不正确,从服务器获取 xml 响应
【发布时间】:2012-11-21 12:06:34
【问题描述】:

我在我的项目中使用 jQGrid 最新版本。以下是我配置的完整配置。

jQuery("#list").jqGrid( {
        url : 'Link.do?method=findAllBrand',
        mtype : 'GET',
        height : 350,
        datatype : "xml",
        colNames : [ 'Name' ],
        colModel : [ {
            name : 'name',
            index : 'name',
            width : 620
        } ],
        rowNum : 10,
        rowList : [ 10, 20, 30 ],
        sortname : 'id',
        sortorder : "desc",
        viewrecords : true,
        multiselect : true,
        imgpath : 'themes/base/images',
        caption : "Brand (s) Summary Grid",
        pager : $('#pager'),
        cache : false,
        onSelectRow : function(id) {

        }
    });

我正在从服务器获取以下 xml 格式的数据:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><rows><page>1</page><total>1</total><records>4</records><row id="BRD00003"><cell>Blanco</cell></row><row id="BRD00001"><cell>Bosch</cell></row><row id="BRD00004"><cell>Chef</cell></row><row id="BRD00002"><cell>F&P</cell></row></rows>

我知道在最后一行的最后一个单元格中会产生问题,因为它包含 & char,在 xml 中具有特殊含义。但是我已经使用 Apache commons lang library 使用下面的函数对整个 xml 进行了转义。

toXml = StringEscapeUtils.escapeXml(toXml);

结果字符串是

&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;yes&quot;?&gt;&lt;rows&gt;&lt;page&gt;1&lt;/page&gt;&lt;total&gt;1&lt;/total&gt;&lt;records&gt;4&lt;/records&gt;&lt;row id=&quot;BRD00003&quot;&gt;&lt;cell&gt;Blanco&lt;/cell&gt;&lt;/row&gt;&lt;row id=&quot;BRD00001&quot;&gt;&lt;cell&gt;Bosch&lt;/cell&gt;&lt;/row&gt;&lt;row id=&quot;BRD00004&quot;&gt;&lt;cell&gt;Chef&lt;/cell&gt;&lt;/row&gt;&lt;row id=&quot;BRD00002&quot;&gt;&lt;cell&gt;F&amp;P&lt;/cell&gt;&lt;/row&gt;&lt;/rows&gt;

我仍然在 Mozilla firefox 最新版本和 chrome 中遇到同样的错误,即 7,8 也是。

我必须给你看这个网格中的特殊字符,我该如何解决这个问题?

谢谢你 米希尔·帕雷赫

【问题讨论】:

  • 谁控制服务器?您将无法修复无效的 xml。必须固定在服务器端。
  • @alxx 请仔细阅读我的描述。我要求在服务器端修复它。我正在从服务器端生成 xml。谢谢
  • 顺便说一下jqGrid没有cacheimgpath参数。 pager 参数的值最好用在字符串形式中。它应该指定 id 选择器:pager: '#pager'。您还应该始终使用gridview: true 选项来提高网格的性能并删除具有默认值的选项(如mtype : 'GET'datatype : "xml")。选项sortname : 'id' 是错误的。您的意思可能是 sortname : 'name' 或者您也应该删除该选项。

标签: ajax jquery jqgrid


【解决方案1】:

我正在从服务器端生成 xml。

然后分别对每个文本节点和每个属性值进行转义,就这么简单。

【讨论】:

  • 你能告诉我例子,我已经用过StringEscapeUtils。
  • 您正在加入字符串以获取 xml 文档,对吗?加入前转义内容数据。
  • ...但显然更强大的方法是使用一些 XML 库来做到这一点。不过,它可能会更慢。
【解决方案2】:

我建议您尽可能使用 JSON 格式而不是 XML。

如果确实需要使用 XML,并且需要在 XML 中放置一些通用值,则需要使用 CDATA 构造 (&lt;![CDATA["some common text"]]&gt;)。

此外,我建议您使用 autoencode: true 作为标准 jqGrid 选项。在这种情况下,您将能够在 jqGrid 单元格中放置任何文本。 jqGrid 将对所有对 HTML 具有特殊意义的字符进行编码。

【讨论】:

  • 谢谢先生。 Oleg 我将使用所有这些选项来优化我的网格。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-14
  • 1970-01-01
  • 2016-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多