XML在Firefox中没有很好地形成从服务器获取xml响应

时间:2012-11-21 12:06:34

标签: ajax jquery jqgrid

我在我的项目中使用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>

我知道在最后一行的最后一个单元格中创建了问题,因为它包含&amp;在xml中有特殊含义的char。但是我使用下面的函数使用Apache commons lang库对整个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也。

我必须在网格中向您展示这个特殊字符,以便如何解决这个问题?

谢谢 Mihir Parekh

2 个答案:

答案 0 :(得分:0)

  

我从服务器端生成xml。

然后分别转义每个文本节点和每个属性值,这很简单。

答案 1 :(得分:0)

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

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

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