错误& # 39;美元.类型不是函数var obj = $.类型(pref);'在jqGrid中提交表单时

Error '$.type is not a function var obj = $.type( pref );' when submit a form in jqGrid

本文关键字:类型 jqGrid pref 表单 提交 obj 美元 函数 错误 var      更新时间:2023-09-26

最近,我正在使用jqGrid来表示我的业务数据集,并且我发现jqGrid具有编辑/添加/删除/查看功能,因此我尝试使用它。但是我遇到了一个问题,尽管我尽力了,我还是不能解决它。

我这样做的例子从这个网站:

jQuery("#deptGrid").jqGrid('navGrid', '#deptNav', {
    view : true
}, 
{
    jqModal : true,
    checkOnUpdate : true,
    savekey : [ true, 13 ],
    navkeys : [ true, 38, 40 ],
    checkOnSubmit : true,
    reloadAfterSubmit : false,
    closeOnEscape : true,
    bottominfo : "Fields marked with (*) are required"
}, {
    jqModal : true,
    checkOnUpdate : true,
    savekey : [ true, 13 ],
    navkeys : [ true, 38, 40 ],
    checkOnSubmit : true,
    reloadAfterSubmit : false,
    closeOnEscape : true,
    bottominfo : "Fields marked with (*) are required"
}, {
    reloadAfterSubmit : false,
    jqModal : false,
    closeOnEscape : true
}, {
    closeOnEscape : true
}, {
    navkeys : [ true, 38, 40 ],
    height : 250,
    jqModal : false,
    closeOnEscape : true
});

UPDATE:以下是我的全部内容:

<link rel="stylesheet" type="text/css" href="<%=BASE_PATH %>admin/styles/stylesheet.css" />
<link rel="stylesheet" type="text/css" href="<%=BASE_PATH %>admin/js/jquery/ui/themes/ui-lightness/ui.all.css" />
<link rel="stylesheet" type="text/css" media="screen" href="<%=BASE_PATH %>jqGrid4.4.1/themes/redmond/jquery-ui-1.8.2.custom.css" />
<link rel="stylesheet" type="text/css" media="screen" href="<%=BASE_PATH %>jqGrid4.4.1/themes/ui.jqgrid.css" />
<link rel="stylesheet" type="text/css" media="screen" href="<%=BASE_PATH %>jqGrid4.4.1/themes/ui.multiselect.css" />
<!-- Including JS -->
<script type="text/javascript" src="<%=BASE_PATH %>admin/js/jquery/jquery.min.js"></script>
<script type="text/javascript" src="<%=BASE_PATH %>admin/js/jquery/jquery-ui-1.8.custom.min.js"></script>
<script type="text/javascript" src="<%=BASE_PATH %>admin/js/jquery/superfish/js/superfish.js"></script>
<script type="text/javascript" src="<%=BASE_PATH %>admin/js/jquery/tab.js"></script>
<script type="text/javascript" src="<%=BASE_PATH %>admin/js/global.js"></script>
<script type="text/javascript" src="<%=BASE_PATH %>admin/js/jquery/thickbox/thickbox.js"></script>
<link  rel="stylesheet" type="text/css" href="<%=BASE_PATH %>admin/js/jquery/thickbox/thickbox.css" />
<script type="text/javascript" src="<%=BASE_PATH %>admin/js/jquery/jquery.form.js"></script>
<script type="text/javascript" src="<%=BASE_PATH %>admin/js/jquery/jquery.validate.js"></script>
<script type="text/javascript" src="<%=BASE_PATH %>admin/js/jquery/jquery-ui-timepicker-addon.js"></script>
<script src="<%=BASE_PATH %>admin/js/jquery/ui/jquery.bgiframe-2.1.2.js" type="text/javascript"></script>
<script src="<%=BASE_PATH %>admin/js/jquery/ui/jquery.ui.core.js" type="text/javascript"></script>
<script src="<%=BASE_PATH %>admin/js/jquery/ui/jquery.ui.widget.js" type="text/javascript"></script>
<script src="<%=BASE_PATH %>admin/js/jquery/ui/jquery.ui.mouse.js" type="text/javascript"></script>
<script src="<%=BASE_PATH %>admin/js/jquery/ui/jquery.ui.button.js" type="text/javascript"></script>
<script src="<%=BASE_PATH %>admin/js/jquery/ui/jquery.ui.draggable.js" type="text/javascript"></script>
<script src="<%=BASE_PATH %>admin/js/jquery/ui/jquery.ui.position.js" type="text/javascript"></script>
<script src="<%=BASE_PATH %>admin/js/jquery/ui/jquery.ui.resizable.js" type="text/javascript"></script>
<script src="<%=BASE_PATH %>admin/js/jquery/ui/jquery.ui.dialog.js" type="text/javascript"></script>
<script src="<%=BASE_PATH %>admin/js/jquery/ui/jquery.effects.core.js" type="text/javascript"></script>
<script src="<%=BASE_PATH %>js/kevinshi.js" type="text/javascript"></script>
<script src="<%=BASE_PATH %>jqGrid4.4.1/js/jquery.jqGrid.src.js" type="text/javascript"></script>
<script src="<%=BASE_PATH %>jqGrid4.4.1/js/i18n/grid.locale-en.js" type="text/javascript"></script>

更新:每当我点击编辑/添加/删除按钮时,它总是在firebug中引起错误:

$.type is not a function 
var obj = $.type( pref );

我将其跟踪到jqGrid源代码中,这个错误发生在文件jquery.jqGrid.src.js的第52行,如下所示:

stripPref : function (pref, id) {
var obj = $.type( pref ); // Happened at this line.
if( obj == "string" || obj =="number") {
pref = String(pref);
id = pref !== "" ? String(id).replace(String(pref), "") : id;
}
return id;
}, 

所以,就在这一刻,我可以说找到了jQuery.type()方法,但是我已经包含了库jquery.min.js,我很困惑。

将同一个模块的实现多次包含在两个JavaScript文件中是错误的。此外,以正确的顺序包含JavaScript文件也很重要。此外,你不应该包含任何你不使用的插件。

通常使用

i18n/grid.locale-en.js
jquery.jqGrid.src.js

在开发一些解决方案和使用

i18n/grid.locale-en.js
jquery.jqGrid.min.js
在最终解中

。参考文档

在任何jqGrid JavaScript文件之前都应该包含jQuery 。包括ui.jqgrid.css和jQuery UI CSS也需要。

如果你仍然有一个错误,你应该张贴准确的行号jquery.jqGrid.src.js在哪里发生了错误。

我刚刚遇到了完全相同的错误消息。我把对我有用的东西贴出来,以防对其他人有帮助。我得到了TypeError: b.type不是一个函数当试图从表单中保存。我使用的jqgrid版本是4.4.3,我调用的是旧版本的jquery(1.4.2)。使用更新版本的jquery(在我的例子中是1.7.2)解决了这个问题。我猜函数'type'不在1.4.2版本中。

解决了这个问题。仅仅因为 jqGrid 不支持 jQuery 1.9