JQGrid editoptions dataurl不使用ajax get?

我有一个使用editoptions:{dataUrl:'getMetadata?type=' + myType+ '&column=colOne'}的数据网格editoptions:{dataUrl:'getMetadata?type=' + myType+ '&column=colOne'} 。 我还将一个函数绑定到ajaxComplete事件,以便在发出请求后执行自定义标头检查。 除了dataUrl请求之外,这对我在JQGrids请求中看到的所有内容都运行良好。 执行get请求后,Ajax complete不会触发。 ajaxStartajaxStop确实被适当地解雇了。 完成/错误/成功不是。

根据dataUrl的jqgrid文档,它应该使用ajax调用来获取数据。

‘数据是通过AJAX调用获得的,应该是一个有效的HTML select元素,带有所需的选项…’

还有什么我在这里不见了吗? 绑定代码如下。

 $('body').bind('ajaxComplete',function(event,request,settings){ if (request.getResponseHeader('REQUIRES_AUTH') === '1'){ location.reload(); }; }); //Other binds added to see what is getting fired $('body').bind('ajaxError',function(event,request,settings){ if (request.getResponseHeader('REQUIRES_AUTH') === '1'){ location.reload(); }; }); $('body').bind('ajaxSuccess',function(event,request,settings){ if (request.getResponseHeader('REQUIRES_AUTH') === '1'){ location.reload(); }; }); $('body').bind('ajaxStart',function(){ var b = "ABC"; var c = "DEF"; }); $('body').bind('ajaxStop',function(event,request,settings){ var b = "ABC"; var c = "DEF"; }); 

编辑:忘记添加请求以200状态返回。

—————————– Ajax Select Options问题—————- ——–

放在任何位置(当前在document.ready中)的以下代码导致所有选择框不显示在搜索中。

 $.extend($.jgrid.defaults, { ajaxSelectOptions: { complete: function (jqXHR) { if (jqXHR.getResponseHeader('REQUIRES_AUTH') === '1') { location.reload(); } return; } }}); 

ColModel和名称

  gridForm.colNames = ['ID','Field1','Field2','Field3','Field4','Field5','Last User Id','Modified Date' ]; gridForm.colModel = [ {name:'id', editable: false, edittype:'text',search:true, stype:'text'}, {name:'Field1', editable: checkedOutByUser, edittype:'text', search:true,editrules:{required:true}, stype:'text'}, {name:'Field2', editable: checkedOutByUser, edittype:'select', editoptions:{dataUrl:dataUrl + "&search=false"}, search:true,editrules:{required:true}, searchoptions:{dataUrl:dataUrl + "&search=true"}, stype:'select'}, {name:'Field3', editable: checkedOutByUser, edittype:'select', editoptions:{dataUrl:dataUrl + "&search=false"}, editrules:{required:true},search:true, searchoptions:{dataUrl:dataUrl + "&search=true"}, stype:'select'}, {name:'Field4', editable: checkedOutByUser, edittype:'select', editoptions:{dataUrl:dataUrl + "&search=false"}, editrules:{required:true}, search:true, searchoptions:{dataUrl:dataUrl + "&search=true"}, stype:'select'}, {name:'Field5', editable: false, edittype:'text', search:true, stype:'text'}, {name:'userId', editable: false, edittype:'text', search:true, stype:'text'}, {name:'modifiedDate', editable: false, search:true, stype:'text', searchoptions:{dataInit:function(el){defaultCalendar.create(el, "componentGrid");}}} ]; 

网格定义,使用一些基于三元的,所以我们可以重新使用jqgrid调用类似的网格

  $("#myGrid").jqGrid( { caption:gridForm.caption, overflow:'hidden', url:gridForm.url?gridForm.url:url, height: gridForm.height?gridForm.height:'auto', datatype: "json", colNames:gridForm.colNames, colModel:gridForm.colModel, recordtext: 'Record(s) {0} - {1} of {2}', rowNum: 20, sortname: gridForm.sortindex?gridForm.sortindex:"id", sortorder: gridForm.sortorder?gridForm.sortorder:"desc", cellEdit: false, cellurl : 'updateRow', editurl:'addRow', cellsubmit : 'remote', toolbarfilter: true, onCellSelect:gridForm.onCellSelect?gridForm.onCellSelect:null, pager: jQuery('#pager'), viewrecords: gridForm.viewrecords?gridForm.viewrecords:true, gridview: gridForm.gridview?gridForm.gridview:true, shrinkToFit: true, multiselect: gridForm.multiselect?gridForm.multiselect:true}); jQuery("#myGrid").jqGrid('filterToolbar'); 

最后,从数据URL返回HTML

 <option value=''Dummy EntryNext EntryThirdEntryFourthEntry 

对于文本墙感到抱歉,但我尝试添加一些看似有用的内容。 请注意,除了启用ajaxSelectOptions默认值之外,这在我们拥有的众多(10+)jqgrids中完全正常(在搜索填充中选择框)。

我建议你使用jqGrid的ajaxSelectOptions选项来自定义使用jqGrid从dataUrl获取数据的Ajax请求。 我希望参数ajaxSelectOptions可以在你的情况下看起来像

 ajaxSelectOptions: { complete: function (jqXHR) { if (jqXHR.getResponseHeader('REQUIRES_AUTH') === '1') { location.reload(); } } }