的确中文很头疼,但无奈自己当初文件夹用中文命名,怎么也得跪着做完。
先贴图 最终要的效果
也就是实现当鼠标移上去 更多显示图片
问题就这样开始了
首先我图片写入磁盘时用的是中文路径,所以可以看到一个中文命名的文件夹(清洁)
然后当我img取数据时 用的是Get请求 这个时候 乱码 因为tomcat post请求可以在web.xml中过滤,但是Get请求默认编码是ISO-8859-1,只要在tomcat /config/server.xml中设置下
加URIEncoding="UTF-8"即可,这也是网上方法,亲测有效。
如此我表格中的一张图片显示出来了,代码如下
$('#dg').datagrid({
title:'服务管理',
fit:true,
toolbar:"#tb",
width:"auto",
height:"auto",
pageSize:5,
pageList:[5,10,15,20],
nowrap:false,
striped: true,
collapsible:true,
url:'./queryServesList.action',
loadMsg:'数据装载中......',
remoteSort:false,
fitColumns:true,
frozenColumns:[[
{field:'ck',checkbox:true}
]],
columns:[[
{title:'服务编号',field:'serid',width:'100',align:'center'},
{title:'商家编号',field:'shopId',width:'100',align:'center'},
{title:'服务名称',field:'sername',width:'120',align:'center'},
{title:'服务简介',field:'sertitle',width:'120',align:'center'},
{title:'服务详情',field:'serdescribe',width:'120',align:'center'},
{title:'服务价格',field:'price',width:'120',align:'center'},
{title:'评分',field:'sgrade',width:'120',align:'center'},
{title:'图片',field:'pic',width:'250',align:'center',
formatter:function(value,row,index){return '<img src="/pic/'+row.shopId+'/'+row.sername+'/'+row.pic+'" style="width=100px; height:100px;"/><a οnmοusemοve="ajaxPic('+row.shopId+',"'+row.sername+'",$(this));" οnmοuseleave="movePic($(this));" >'
+' 更多<div id="picBox" style="display:none;"></div></a>';}},
{field:'action',title:'Action',width:'100',align:'center',
formatter:function(value,row,index){
var e = '<a href="#" οnclick="editrow('+row.serid+')"><span class="glyphicon glyphicon-edit">编辑</span></a> ';
var d = '<a href="#" οnclick="deleterow('+row.serid+','+row.shopId+',"'+row.sername+'")"><span class="glyphicon glyphicon-trash">删除</span></a>';
return e+d;
}
}
]],
pagination:true,
rownumbers:true
}); formatter:function(value,row,index){return '<img src="/pic/'+row.shopId+'/'+row.sername+'/'+row.pic+'"......;}注意img src的路径<img src="/pic/'+row.shopId+'/'+row.sername+'/'+row.pic+'"......;}
如果改为<img src="pic/'+row.shopId+'/'+row.sername+'/'+row.pic+'"......;}
这样的话就会变成
路径中就会加入工程名
其实tomcat 的server.xml的配置已经基本解决了中文传输问题了
我后边的折腾一直是在 js之间传中文
报错
Uncaught SyntaxError: Unexpected identifier
后来是 又查了很多 特别要注意js 路径中单引号 双引号 嵌套 特别容易出错
<a οnmοusemοve="ajaxPic('+row.shopId+',"'+row.sername+'",$(this));" οnmοuseleave="movePic($(this));" >'
+' 更多<div id="picBox" style="display:none;"></div></a>';}},这里调用ajaxPic();方法 把中文传过去 要转换为字符串
function ajaxPic(shopId,sername,obja){
var sn="";
sn=sername;
$.ajax({
type:"post",
traditional :true,
dataType:"json",
url:'./queryServesPic.action',
data:{"shop_id":shopId,"sername":sn},
success:function(data){
var DivStr="";
for(var i=0;i<data.picArray.length;i++){
DivStr=DivStr+"<a style='text-align:center'>" +
"<img src='/pic/"+shopId+"/"+sn+"/"+data.picArray[i]+"' style='width=100px;height:100px;'/></a>";
if(i%4==0&&i!=0)
DivStr=DivStr+"<br/>";
}
var objDiv=obja.find("div");
objDiv.html(DivStr);
objDiv.css({
"display":"block",
"position":"absolute",
"left":"0",
"top":"100px",
"border":"1px solid #000",
"box-shadow":"10px 10px 5px #888888",
"background-color":"#fff"
});
}
});
}还有用"也行我这边插入代码 直接转换成下边了
var d = '<a href="#" οnclick="deleterow('+row.serid+','+row.shopId+',"'+row.sername+'")"><span class="glyphicon glyphicon-trash">删除</span></a>'; 这样折腾了许久 图片总算可以显示了
版权声明:本文为Hajnal原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。