AJAX JSON jqGrid 中没有显示数据

AJAX JSON data is not display in jqGrid

我是 jqgrid 的新手,现在我尝试在单击一个 colmodel 时显示数据,当时我需要在另一个 jqgrid 中显示数据,我从服务器接收到数据,它传递了一些函数并显示了数据,但它不显示任何有数据但也没有错误怎么显示在里面??

gridland.jqGrid({

        datatype:'local',
        data: val,


        colNames:clnms,
        colModel:collmdls,
        rowNum:10,
        rowList:[10,20,30],
        pager: "land_details_table_pager",
        gridview:true,
        //rownumbers:true,
      //  sortname: 'id',
        viewrecords: true,
        sortorder: 'asc',
        caption:"Land Detail",
        height: '100%',
        autowidth:true,
        shrinkToFit:false,



        onCellSelect: function(rowid, index, contents, event) 
        {    



           var cm =  gridland.getGridParam('colModel');

            var rowData = gridland.getRowData(rowid);

            alert("rowData====>"+JSON.stringify(rowData));

            var slNno = rowData['slNno'];

             $("#currpattachk").val(rowid);

             var district;
             var taluk;
             var  village;
             var applId;

             $.each(val,function(k,v){

                 district= v.districtCode;
                 taluk=v.talukCode;
                 village=v.villageCode;
                 applId=v.applicationId;
           });
  if(cm[index].name == "pattaNo")
               {
                    alert("HERE pattaNo");





                   var pattaNo = rowData['pattaNo'];   // perticuler Column name of jqgrid that you want to access
                   var splitsursuvy=rowData['survsub'].split("/");




                  var arr= {}

                 arr.district= district;
                  arr.taluk=taluk;
                 arr.village=village;
                 arr.pattaNo=pattaNo
                arr.surveyno=splitsursuvy[0]  
                arr.subdivno=splitsursuvy[1];
                arr.applicationId=applId;


                var landarrchk=[];
                landarrchk.length=0;


             var inputVal=  JSON.stringify(arr);



                //alert("in fetch owners");
                //alert("inputval====>"+JSON.stringify(arr));
                //alert("inputVal===> "+inputVal);
                //var hash = cal_hmac(xx);
                //var m = "";
            //  document.getElementById('imgdiv').style.display = 'block';

                $.ajax({
                        url: urlService + serviceName + '/getsublanddetails?jsoncallback=?',
                        headers:
                        {
                            "emp_value": ses,
                            "signature": hash,
                            "roleId": roleId,
                            "timestamp": t,
                        },
                        type: 'POST',
                        dataType: 'jsonp',
                        data: inputVal.toString(),
                        // jsonpCallback:"aaa",
                        contentType: "application/json",
                        success: function(data)
                        {


                            var s_no=1;
                            content="";

                            var datachk;

                            /*var survsub;
                            =v.surveynewNo+"/"+v.subDivnewNo;*/

                            $.each(data, function(k, v)
                                    {
                                $.each(v.OwnerData, function(k, v1)
                                        {   

                                    datachk+='<div style="display:none"  id="currpatta'+s_no+'" >'+ JSON.stringify(v1) + '</div>'

                                    $("#landnewdetailchk").html(datachk);

                                    v1.survsub=v1.surveynewNo+"/"+v1.subDivnewNo;
                                    v1.slNno=s_no;
                                    v1.select='<input type="radio" name="subradio" id="subradio" onclick="getcurrpatta(' + s_no + ')" />';

                                    getsublanddetails(v1);


                                        });
                                s_no++;
                                    });

                        },
                        error: function(jqXHR, exception)
                        {
                            // alert("Error:"+JSON.stringify(jqXHR));
                            alert("Error Occured");
                            document.getElementById('imgdiv').style.display = 'none';
                        }
                        });


               }
});
}

第二格:

function getsublanddetails(arr)
{




    alert("Landdetailgrid======="+JSON.stringify(arr));


    clnms=['S.No','SurveyNo/SubDivisionNo','Excet Hect','Excet Hect','Select Subdivision'];

    collmdls=[


               {
                    name:'slNno',
                    index:'slNno',
                    classes:'slNno',
                    width:150,
                    align:'center',
                    sorttype: 'String'
                },

                {
                    name:'survsub',
                    index:'survsub',
                    classes:'survsub',
                    value:20,
                    width:150,
                    align:'center' 
                  //    onCellSelect:ff()   

                   },

                {
                    name:'Exthect',
                    index:'Exthect',
                    classes:'Exthect',
                    width:150,
                    align:'center',
                    sorttype: 'String'
                 }, 


                 {
                    name:'Extarea',
                    index:'Extarea',
                    classes:'Extarea',
                    width:150,
                    align:'center',
                    sorttype: 'String'
                  },

                  {
                        name:'select',
                        index:'select',
                        classes:'select',
                        width:150,
                        align:'center',
                        sorttype: 'String'
                      },
];
$("#landdetailnew").jqGrid({




        datatype:'local',
        data: arr,


        colNames:clnms,
        colModel:collmdls,
        rowNum:10,
        rowList:[10,20,30],
        pager: "landnewdetail",
        gridview:true,

        //rownumbers:true,
      //  sortname: 'id',
        viewrecords: true,
        sortorder: 'asc',
        caption:"New Land Detail",
        height: '100%',
        autowidth:true,
        shrinkToFit:false
});



}

json数据为:

Landdetailgrid======={"villageCode":"057","District_Code":"16","Extarea":12,"talukCode":"03","subDivnewNo":"2A","Exthect":0,"curpatta":1840,"surveynewNo":"167   ","survsub":"167   /2A","slNno":1,"select":"<input type=\"radio\" name=\"subradio\" id=\"subradio\" onclick=\"getcurrpatta(1)\" />"}

Landdetailgrid======={"villageCode":"057","District_Code":"16","Extarea":9,"talukCode":"03","subDivnewNo":"2B","Exthect":0,"curpatta":1841,"surveynewNo":"167   ","survsub":"167   /2B","slNno":1,"select":"<input type=\"radio\" name=\"subradio\" id=\"subradio\" onclick=\"getcurrpatta(1)\" />"}

我发现您发布的代码存在一些问题

  1. "Landdetailgrid======="之后显示的数据不是项目数组。您不能显示一项数据。数据应该有外部 `[].
  2. 您似乎试图调用 getsublanddetails 函数 一次。第一次调用$("#landdetailnew").jqGrid({...});会转换空table<table id="landdetailnew"></table>相对复杂结构的div和tables。所以你不能再做一次了。可以做的是设置 data 选项的新值并使用 $("#landdetailnew").trigger("reloadGrid"); 重新加载 jqGrid 数据。或者,可以使用 $("#landdetailnew").jqGrid("GridUnload"); 销毁网格 ,然后在同一位置创建另一个网格。
  3. 'select' 的输入数据似乎有问题。在表单的页面上有 一个元素 是可以的,但是如果网格更多的是一行,你将有 id 重复项,因为所有元素的列将具有相同的 id="subradio" 属性 (<input type="radio" name="subradio" id="subradio" onclick="getcurrpatta(1)" />)。
  4. 主网格onCellSelect回调的通用代码似乎过于复杂,可以多次减少。我建议您在第二个网格中使用 datatype: "jsonp", loadonce: true。您可以使用 ajaxGridOptions: {headers: ...} 选项设置额外的 HTTP headers 请求,您可以使用 jsonReader: {root: "OwnerData"} 通知服务器响应的哪一部分应该用作 jqGrid 数据。
  5. 您可以删除在 select 列中使用的 onclick="getcurrpatta(1)" 部分。您可以使用 custom formatter<input type="radio" name="subradio"/> 数据放入列中。可以使用beforeSelectRowonCellSelect来处理单选按钮列中的onclick事件。