求助:JSP页面引入js报错,但是html引入同样的js就没有问题

elfenliedef 2010-09-13 11:11:03
使用了jqGrid控件,在IE6下报错为:$.jgrid.defaults为空或不是对象。,html页面下正常。
这是怎么一回事?
完整jsp页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'jqGridShow.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<link rel="stylesheet" type="text/css" media="screen" href="js/gqgrid/themes/redmond/jquery-ui-1.7.1.custom.css" />
<link rel="stylesheet" type="text/css" media="screen" href="js/gqgrid/themes/ui.jqgrid.css" />
<!--
<link rel="stylesheet" type="text/css" media="screen" href="themes/ui.multiselect.css" />
-->
<script src="js/gqgrid/js/jquery.js" type="text/javascript"></script>
<script src="js/gqgrid/js/jquery-ui-1.7.2.custom.min.js" type="text/javascript"></script>
<!--
<script src="js/jquery.layout.js" type="text/javascript"></script>
-->
<script src="js/gqgrid/js/i18n/grid.locale-zh_CN.js" type="text/javascript"></script>
<!--
<script type="text/javascript">
$.jgrid.no_legacy_api = true;
$.jgrid.useJSON = true;
</script>
-->
<script src="js/gqgrid/js/jquery.jqGrid.min.js" type="text/javascript"></script>
<!--
<script src="js/jquery.tablednd.js" type="text/javascript"></script>
<script src="js/jquery.contextmenu.js" type="text/javascript"></script>
<script src="js/ui.multiselect.js" type="text/javascript"></script>
-->
<script type="text/javascript">
var jqgrid ={
'lastselId':null
}
$(function(){
alert();
$("#list2").jqGrid({
url:'/productjson/jqGrid_excel_ajax.action',
datatype: "json",
colNames:['ID','产品描述', '名称', '价格','类型ID','操作'],
colModel:[
{name:'id',index:'id', width:55},
{name:'invdate',index:'invdate', width:140,editable:true,
edittype:'text',
formoptions:{elmprefix:'(*)'}
},
{name:'name',index:'name asc, invdate', width:120,editable:true,
edittype:'checkbox',
editoptions:{value:"1:0"}
},
{name:'amount',index:'amount', width:120, align:"right",editable:true},
{name:'tax',index:'tax', width:110, align:"right",editable:true},
{name:'act',index:'act',width:110,search:false,sortable:false,editable:false}
],
rowNum:10,
rowList:[10,20,30],
viewrecords: true,
jsonReader: {
id: "id"
},
pager: $('#pager2'),
sortname: 'id',
viewrecords: true,
sortorder: "desc",
caption:"报价表格",
editurl:'modifyBrand.action',
deleteurl:'modifyBrand.action',
//行被选中事件
onSelectRow:function(id){
//alert(id);
if(id && id!==jqgrid.lastselId){
//保存数据到客户端,但是不会提交到服务器
jQuery("#list2").saveRow(jqgrid.lastselId, false, 'clientArray');
//会恢复原来的数据
//jQuery('#list2').restoreRow(jqgrid.lastselId);
jqgrid.lastselId=id;
}
jQuery('#list2').editRow(id, true);
},
gridComplete:function(){
var ids = $("#list2").getDataIDs();//.getDataIDs();//jqGrid('getDataIDs');
for(var i = 0;i<ids.length;i++){
var cl = ids[i];
be = "<input style='height:22px;width:40px;' type='button' value='编辑' onclick=\"jQuery('#list2').editRow('"+cl+"',{checkOnSubmit:true,checkOnUpdate:true,closeAfterEdit:true,closeOnEscape:true});\" />";
//be = "<input style='height:22px;width:40px;' type='button' value='编辑' onclick=\"jQuery('#list2').editGridRow('"+cl+"',{checkOnSubmit:true,checkOnUpdate:true,closeAfterEdit:true,closeOnEscape:true});\" />";
de = "<input style='height:22px;width:40px;' type='button' value='删除' onclick=\"jQuery('#list2').delGridRow('"+cl+"',{closeOnEscape:true});\" />";
$("#list2").setRowData(ids[i],{act:be+de});
}
}
})
.navGrid('#pager2',{edit:false,add:false,del:false})
.navButtonAdd('#pager2',{position:'first',title:'导出为Excel文件',caption:'',onClickButton:new function(){}});
$("#btnAdd").click(function(){
$("#list2").editGridRow('new',{height:280,width:500,reloadAfterSubmit:true,closeOnEscape:true,addedrow:'first'});
});
});
</script>
</head>

<body>
展示数据
<table id="list2" class="scroll" cellpadding="0" cellspacing="0"></table>
<div id="pager2" class="scroll" style="text-align:center;"></div>
<input type="button" id="btnAdd" value="弹出窗口添加"/>
表单添加:<br/>
<form action="">
<table>
<tr><td>产品描述</td><td>名称</td><td>价格</td><td>类型ID</td></tr>
<tr>
<td><input type="text" name=""/></td>
<td><input type="text" name=""/></td>
<td><input type="text" name=""/></td>
<td><input type="text" name=""/></td>
</tr>
</table>

</form>
${excelPath }
</body>
</html>
...全文
805 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qianquan 2010-09-13
  • 打赏
  • 举报
回复
路径问题
安心逍遥 2010-09-13
  • 打赏
  • 举报
回复
路径问题
楼主也可以把<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
删去
magong 2010-09-13
  • 打赏
  • 举报
回复
用浏览器访问到JSP页面后,右击鼠标“查看页面源代码”,比看JSP文本更好,更容易找到问题。

感觉不是路径问题,因为你页面中的路径都是相对于当前目录的。

有可能有些特殊文字内容被JSP提前误处理掉了。建议将复杂JavaScript文本写到.js文件中,不要写到JSP文件中。
默契加速度 2010-09-13
  • 打赏
  • 举报
回复
加上这句,绝对就没问题了,<%=request.getContextPath %>
老猫的TOM 2010-09-13
  • 打赏
  • 举报
回复
既然你要在jsp中引入js,css等并且获取了相对路径path,那你在引入的时候全部换成相对路径。path所指代的是项目路径,后面加上你文件所在的路径,如引入的时候为:<%=path%>/js/.........

<link rel="stylesheet" type="text/css" media="screen" href="<%=path%>/js/gqgrid/themes/redmond/jquery-ui-1.7.1.custom.css" />
<link rel="stylesheet" type="text/css" media="screen" href="<%=path%>/js/gqgrid/themes/ui.jqgrid.css" />
<!--
<link rel="stylesheet" type="text/css" media="screen" href="<%=path%>/themes/ui.multiselect.css" />
-->
<script src="<%=path%>/js/gqgrid/js/jquery.js" type="text/javascript"></script>
<script src="<%=path%>/js/gqgrid/js/jquery-ui-1.7.2.custom.min.js" type="text/javascript"></script>
<!--
<script src="<%=path%>/js/jquery.layout.js" type="text/javascript"></script>
-->
<script src="<%=path%>/js/gqgrid/js/i18n/grid.locale-zh_CN.js" type="text/javascript"></script>
<!--
<script type="text/javascript">
$.jgrid.no_legacy_api = true;
$.jgrid.useJSON = true;
</script>
-->
<script src="<%=path%>/js/gqgrid/js/jquery.jqGrid.min.js" type="text/javascript"></script>
<!--
<script src="<%=path%>/js/jquery.tablednd.js" type="text/javascript"></script>
<script src="<%=path%>/js/jquery.contextmenu.js" type="text/javascript"></script>
<script src="<%=path%>/js/ui.multiselect.js" type="text/javascript"></script>
-->


不知道你的js整个项目路径是什么样的,以上只是举个例子,估计问题就是这个。
elfenliedef 2010-09-13
  • 打赏
  • 举报
回复
我按照一楼删掉那段代码,可还是同样的错误啊~究竟是什么样的路径问题?还应该怎么修改才行呢

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧