- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有搜索框的表单,当触发时,在输入字段中键入的值将发送到 Web 服务,该 Web 服务将 XML 数据返回给我,我将其输入 jqGrid 以显示结果列表。我得到了正确显示的结果,我遇到的问题是,当没有找到与搜索条件匹配的结果时,当发生这种情况时,Web 服务仍然返回带有通常 header 但没有任何数据集的 XML。发生的情况是 jqGrid 显示“正在加载...”框,并且无限期地保持这种状态,并且在重新加载网页之前搜索功能将无法工作。
这是相关的JS代码:
$("#buttonSearch").on("click", function() {
$("#jqSearch").setGridParam({url:"http://website/webservice=filter="+$("#inputSearch").val(),datatype:"xml" }).trigger("reloadGrid");
$("#divSearchDialog").dialog("open");
});
$("#jqSearch").jqGrid({
ajaxGridOptions: {
contentType: 'application/soap+xml; charset=utf-8',
timeout: 10000
},
datatype: 'local',
xmlReader: { root:"NewDataSet", row:"Table" , repeatitems:false},
colNames: ["_ItemGuid", "AssetType", "HostName", "SerialNumber", "Manufacturer", "Model", "Status", "SystemType", "OSName", "OSVersion", "OSType", "Env", "Details" ],
colModel: [
{ name: '_ItemGuid', index: '_ItemGuid', hidden:true, xmlmap:"_ItemGuid" },
{ name: 'AssetType', index: 'AssetType', xmlmap:"AssetType", width: 70 },
{ name: 'HostName', index: 'HostName', xmlmap:"HostName", width: 50 },
{ name: 'SerialNumber', index: 'SerialNumber', xmlmap:"SerialNumber", width: 180 },
{ name: 'Manufacturer', index: 'Manufacturer', xmlmap:"Manufacturer", width: 70 },
{ name: 'Model', index: 'Model', xmlmap:"Model", width: 80 },
{ name: 'Status', index: 'Status', xmlmap:"Status", width: 40 },
{ name: 'SystemType', index: 'SystemType', hidden:true, xmlmap:"SystemType" },
{ name: 'OSName', index: 'OSName', hidden:true, xmlmap:"OSName" },
{ name: 'OSVersion', index: 'OSVersion', hidden:true, xmlmap:"OSVersion" },
{ name: 'OSType', index: 'OSType', hidden:true, xmlmap:"OSType" },
{ name: 'Env', index: 'Env', hidden:true, xmlmap:"Env" },
{ name: 'Details', index: 'Details', hidden:true, xmlmap:"Details" },
],
gridView: true,
loadonce: true,
viewrecords: true,
emptyrecords: 'No results found matching your search criteria.',
width: 960,
height: 250,
rowNum: 50,
loadError: function(xhr,st,err) {
if (xhr.status!=200) {
alert("Error "+xhr.status+" "+xhr.statusText+" loading grid "+this.id);
}
}
});
这就是有效的 XML 的样子:
<?xml version="1.0" encoding="utf-8" ?>
<NewDataSet>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Table">
<xs:complexType>
<xs:sequence>
<xs:element name="_ItemGuid" msdata:DataType="System.Guid, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="AssetType" type="xs:string" minOccurs="0" />
<xs:element name="HostName" type="xs:string" minOccurs="0" />
<xs:element name="SerialNumber" type="xs:string" minOccurs="0" />
<xs:element name="Manufacturer" type="xs:string" minOccurs="0" />
<xs:element name="Model" type="xs:string" minOccurs="0" />
<xs:element name="Status" type="xs:string" minOccurs="0" />
<xs:element name="SystemType" type="xs:string" minOccurs="0" />
<xs:element name="OSName" type="xs:string" minOccurs="0" />
<xs:element name="OSVersion" type="xs:string" minOccurs="0" />
<xs:element name="OSType" type="xs:string" minOccurs="0" />
<xs:element name="Env" type="xs:string" minOccurs="0" />
<xs:element name="Details" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<Table>
<_ItemGuid>912da2ab-d717-678c-a5ad-bb1ece8bcf5f</_ItemGuid>
<AssetType>Virtual Machine</AssetType>
<HostName>MYSERVER</HostName>
<SerialNumber>VMware-42 21 8c 09 00 01 02 03-04 05 06 07 08 09 10 11</SerialNumber>
<Manufacturer>VMware, Inc.</Manufacturer>
<Model>VMware Virtual Platform</Model>
<Status>Active</Status>
<SystemType>Win64</SystemType>
<OSName>Windows Server 2008 R2 Standard</OSName>
<OSVersion>6.1</OSVersion>
<OSType>Win</OSType>
<Env>PROD</Env>
<Details>PROD</Details>
</Table>
</NewDataSet>
如果没有找到结果,XMl 看起来像这样,则缺少 Table 元素,这些元素是我在 xmlreader 中查找的行
<?xml version="1.0" encoding="utf-8" ?>
<NewDataSet>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Table">
<xs:complexType>
<xs:sequence>
<xs:element name="_ItemGuid" msdata:DataType="System.Guid, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:string" minOccurs="0" />
<xs:element name="AssetType" type="xs:string" minOccurs="0" />
<xs:element name="HostName" type="xs:string" minOccurs="0" />
<xs:element name="SerialNumber" type="xs:string" minOccurs="0" />
<xs:element name="Manufacturer" type="xs:string" minOccurs="0" />
<xs:element name="Model" type="xs:string" minOccurs="0" />
<xs:element name="Status" type="xs:string" minOccurs="0" />
<xs:element name="SystemType" type="xs:string" minOccurs="0" />
<xs:element name="OSName" type="xs:string" minOccurs="0" />
<xs:element name="OSVersion" type="xs:string" minOccurs="0" />
<xs:element name="OSType" type="xs:string" minOccurs="0" />
<xs:element name="Env" type="xs:string" minOccurs="0" />
<xs:element name="Details" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
</NewDataSet>
这是我在调试器中遇到的错误:
Unable to get property 'append' of undefined or null reference
这是 jquery.jqGrdid.min.js 中触发它的部分:
if(d.p.gridview===!0&&(n=d.p.treeANode>-1?d.p.treeANode:0,d.p.grouping?g||(w.jqGrid("groupingRender",S,d.p.colModel.length,d.p.page,T),S=null):d.p.treeGrid===!0&&n>0?$(d.rows[n]).after(L.join("")):(Y.append(L.join("")),d.grid.cols=d.rows[0].cells)),d.p.subGrid===!0)
我尝试在我的ajaxGridOptions上设置超时,但这似乎没有做任何事情,当我添加emptyrecords事件时也是如此。我还尝试使用 loadError 管理错误,但它似乎没有捕获它。我用 beforeProcessing 尝试了很多东西,但从未成功地让它发挥作用。
有人知道如何在导致我的 jqGrid 崩溃之前管理此错误吗?
最佳答案
看起来这是 jqGrid 5.0.0 的问题,我恢复到 4.5.4 并且它开始完美工作。
关于javascript - 由于 XML 无效,jqGrid 停留在正在加载...,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32338328/
这是我的代码 />100 1000 它不按要求工作.. 当提交表单时(并且在任何错误情况下)它返回到默认选中的单选按钮,即值 = 1000 用户必须再次单击值 = 100,而目标是,如果用户选择了 1
假设我有一个透明的红色 HTML 元素。当我悬停该元素时,它应该变成纯红色。当我停止悬停该元素时,它应该动画回到第一个状态,但仅在 X 秒后。 到目前为止一切顺利,请参阅代码片段。 我的问题是当我停止
我遇到了 cookie 情况,我的 cookie 会存储一个颜色名称或根本不存储任何内容。所以让我们这样解释吧。我的 cookie 与我网站的外观有关,我的网站有 3 种外观: 正常(完全没有 coo
这是我的问题。我有一张包含三个 div 的 Bootstrap v4 卡。 A 是最重要的一个,我希望它保持在左上角。 当页面较宽时,我希望 B 和 C 在 A 的右侧。 当页面变窄时,卡片缩小,C
示例表: uid time_stp traf 1 2016-01-13 00:00:00 6 1 2016-01-13 05:00:00 8 1
我是一名优秀的程序员,十分优秀!