我有一个公开的Web服务,该服务以JSON或XML返回数据。我已经建立了一个JSP页面并在jQgrid中添加了它。数据显示得很好,但是当我尝试使用filterToolbar过滤结果时,它失败了。萤火虫说:
TypeError:jQuery.jgrid未定义”。

我已经阅读了关于jQuery和jqGrid的几乎所有文章,而且我不知道为什么会收到此错误。我正在从一个appfuse原型运行hibernate和Spring MVC。 / services / api / vulnss将根据请求的类型返回xml或json。 json和XML都很好地填充了网格,并且我能够对所有内容进行排序和分页。

<html>
<head>


        <link href="/resources/css/ui.jqgrid.css" rel="stylesheet" type="text/css"/>
        <link href="/resources/css/ui.jqgrid-bootstrap.css" rel="stylesheet" type="text/css"/>
        <link href="/resources/css/ui.jqgrid-bootstrap-ui.css" rel="stylesheet" type="text/css"/>





        <script type="text/javascript" src="/resources/js/jquery-1.11.0.min.js"></script>
        <script type="text/javascript" src="/resources/js/i18n/grid.locale-en.js"></script>
        <script type="text/javascript" src="/resources/js/jquery.jqGrid.min.js"></script>

</head>


和脚本部分:

 <script type="text/javascript">


var $ j = jQuery.noConflict();
(函数($ j){

          $j().ready(function (){
                $j("#jqGrid").jqGrid({
                        url: '/services/api/vulns',
                        mtype: "GET",
                        //styleUI : 'Bootstrap',
                        datatype: "xml",
                        colModel: [
                            { label: 'idcveconfig', name: 'idcveconfig', key: true, width: 75 },
                            { label: 'cveid', name: 'cveid', width: 150 },
                            { label: 'product', name: 'product', width: 150 },
                            { label: 'version', name: 'version', width: 150 },
                            { label:'vendor', name: 'vendor', width: 150 },
                            { label:'vulnsummary', name: 'vulnsummary', width: 150 }
                            ],
                        viewrecords: true,
                        loadonce: true,
                        height: 250,
                        rowNum: 20,
                        gridview: true,
                        pager: "#jqGridPager",
                        caption: "LOading data from server at once",
                        xmlReader : {
                           root: "List",
                           row: "item",
                           //page: "rows>page",
                           //total: "rows>total",
                           //records : "rows>records",
                           repeatitems: false,
                           //cell: "cell",
                           //id: "[id]",
                           //userdata: "userdata",

                           }


                    });
                $j("#jqGrid").filterToolbar({searchOnEnter : true});

                });
})( jQuery );




我用chrome打开了开发工具,并在控制台中将jQuery与$ j交换,并且它返回了fale。我不确定应该返回什么,但是字符串307存在于“ idcveconfig”字段中。

jquery - jQgrid filterToolbar失败,并显示searchOnEnter-LMLPHP

最佳答案

当前的过滤实现使用全局jqGrid。它不能使用您在$j中设置的noConflict()。我建议你包括

<script type="text/javascript">
    $.jgrid = $.jgrid || {};
    $.jgrid.no_legacy_api = true;
</script>


jquery.jqGrid.min.js之前,并且仅以$j("#jqGrid").jqGrid("filterToolbar", {searchOnEnter: true});而不是$j("#jqGrid").filterToolbar({searchOnEnter: true});的形式使用用法样式jqGrid方法。它减少了可能的冲突。另外,您应该设置全局jQuery变量(如window.jQuery = $j;)。

更新:我更准确地检查了您的代码,在我看来,使用filterToolbar应该没有问题。您当前的代码仍设置全局jQuery变量,jqGrid需要使用该变量。我尝试使用带有免费jqGrid的非常紧密的代码,并且没有问题。我认为您可以准备的演示可以清除所有内容。

关于jquery - jQgrid filterToolbar失败,并显示searchOnEnter,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35739589/

10-13 04:45