JQGred在AJAX调用上不刷新

jqgrid not refreshing on ajax call

本文关键字:刷新 调用 AJAX JQGred      更新时间:2023-09-26

刷新jqgrid时遇到问题。尝试了很多事情,但仍然没有解决方案。我想在从服务器端获取 json 数据后刷新网格。这是我为刷新jqgrid所做的工作。

$("#searchButton").on("click",function(){
var url = contextPath+"/patient/fetchPatients?firstName="+$("#firstName").val()+"&lastName="+$("#lastName").val()+"&diagnosis="+$("#diagnosis :selected").val();    
jQuery("#searchedPatientGrid").setGridParam({datatype:'json',url:url}).trigger('reloadGrid');
});

这是我的jqgrid配置代码。

jQuery("#searchedPatientGrid").jqGrid({
datatype: "json",
colNames:['id','Firsr Name','Last Name','MObile Number','Action'],
colModel:[
    {name:'id',index:'id', width:100},
    {name:'firstName',index:'firstName', width:100},
    {name:'lastName',index:'lastName', width:100},
    {name:'mobileNumber',index:'mobileNumber', width:100},
    {name:'operationDetails.operationDone',index:'operationDetails.operationDone', width:100}
],
rowNum:10,
rowList:[10,20,30],
pager: '#gridPager',
sortname: 'id',
"width":"900",
"gridview":true,
viewrecords: true,
sortorder: "desc",
loadonce: false,
caption:"Patient Search Result"
});
当我第一次点击按钮时,它会点击服务器

并在网格中加载数据,但是当我再次点击搜索按钮时,它不会点击服务器以获取数据。我不知道为什么会这样。甚至我在配置中提到过,loadOnce : false。然后,如果我点击搜索按钮,它应该会命中服务器。

我可以

猜到,默认情况下,如果您不指定 jqgrid mtype参数,它在向服务器发送请求时使用 POST,因此您的 URL 参数不能发送。

我认为您可以尝试使用这样的东西:

    $("#searchButton").on("click", function () {
        var url = contextPath + "/patient/fetchPatients";
        var postData =
            {
                firstName: $("#firstName").val(),
                lastName: $("#lastName").val(),
                diagnosis: $("#diagnosis :selected").val()
            }
    });
    $("#searchedPatientGrid").trigger('reloadGrid',
        [
            {
                datatype: 'json',
                url: url,
                postData: postData
            }]);

有关如何使用其他参数重新加载 jqgrid 的更多信息,您可以查看@Oleg答案。