2012-11-21 74 views
0

我在我的项目中使用jQGrid最新版本。以下是我配置的完整配置。XML在Firefox中形成不正确从服务器获取xml响应

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> 

我知道,在最后一排的最后一个单元格是创造的问题,因为它包含&字符具有特殊的意义xml。但是我已经使用下面的函数使用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得到了同样的错误最新版本,并在铬,即7,8也。

我必须告诉你网格中的这个特殊字符,那么我该如何解决这个问题呢?

谢谢 米希尔Parekh的

+0

谁控制服务器?你将无法修复无效的XML。必须在服务器端修复。 – alxx

+0

@alxx请仔细阅读我的描述。我要求在服务器端修复它。我从服务器端生成xml。感谢 – Mihir

+0

通过jqGrid没有'cache'和'imgpath'参数的方式。您应该更好地在字符串表单中使用“pager”参数的值。它应该指定id选择器:'pager:'#pager''。你还应该总是使用'gridview:true'选项来提高网格的性能,并移除具有默认值的选项(如'mtype:'GET'','datatype:“xml”')。选项'sortname:'id''是错误的。你的意思可能是'sortname:'name''或者你应该删除该选项。 – Oleg

回答

0

我生成从服务器端的XML。

然后分别转义每个文本节点和每个属性值,它就像那样简单。

+0

你能告诉我如何用例子,我已经使用了StringEscapeUtils。 – Mihir

+0

你正在加入字符串来获取xml文档,对吧?加入前转义内容数据。 – alxx

+0

...但显然更强大的方法是使用一些XML库来做到这一点。不过,它可能会变慢。 – alxx

0

我建议您在可能的时候使用JSON格式而不是XML。

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

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

+0

谢谢先生。奥列格我将使用所有这些选项来优化我的网格。 – Mihir

相关问题