layer是一款口碑很好的弹层组件,详细的介绍可以参看官网介绍,网址是http://layer.layui.com/。本期在博主进行测试的过程中,发现需要顺利返回JSON并通过前端进行获取并显示照片需要注意以下内容: 1、如果测试可以将json打印出来,需要注意的是,json中的所有斜杠必须都是向右斜的(\),如果是本机测试的话,要注意的是获得的图片资源的路径格式必须为相对路径,也就是说路径钱不能像那些以c:盘符号开头的形式。

1、如果对于打印出的json无法自己判断是否正确的话,可以通过下面的这个网站来进行json校对,官网是:http://www.bejson.com/。如果校验后不报错可以基本判断输出的json格式是正确的。

2、注意在打印json的时候,如果是双引号套双引号,像这样 ” “” ” ;这样的话必须进行转义,写成:”\”\””。*后记得return xxx.toString();

3、要使用layer的照片图层可以将下载的组件放到WEB-INF目录下,在引用的时候,需要使用*对路径进行引用,例:,还需引入:extend/layer.ext.js,extend/layer.ext.js的引用也可以使用:layer.use(‘extend/layer.ext.js’);来进行。使用$.getJSON(“url”,value,callback)。jQuery语法适用于layer。如图:

%title插图%num
4、*后楼主在测试的时候发现自己使用的360*速浏览器在*速模式下点击后图片无法弹出,切换到兼容模式和IE9模式都是可以的,谷歌浏览器也可以正常弹出,各项功能指标正常!

5、下面给出一个我亲自测试好用的程序。

package mypicture;

import java.util.ArrayList;
//MVC进一步分层
public class PictureService {
public static String getJSON(ArrayList list , String contextPath){//接收所有图片
StringBuilder str = new StringBuilder();//字符串连接
str.append(“{“);
str.append(“\”status\”: 1, “);
str.append(“\”msg\”: \”照片\”, “);
str.append(“\”title\”: \”用户相册\”, “);
str.append(“\”id\”: 0, “);
str.append(“\”start\”: 0, “);
str.append(“\”data\”: [ “);
//处理照片
for (int i = 0; i < list.size(); i++) {
str.append("{");
str.append("\"name\": \"" + list.get(i).getName() + "\", ");
str.append("\"pid\": 0, ");
//注意这个中间的是左斜杠,若是写成右斜杠"\\"出不来结果
str.append("\"src\": \""+ contextPath + "/" + list.get(i).getUrl() + "\", ");
str.append("\"thumb\": \"\", ");//缩略图
str.append("\"area\": [600,800] " );
str.append("}");
if (i < list.size()-1) {
str.append(",");//不是*后一项的话,加上,号
}else {
break;
}
}
str.append("]");
str.append("}");
return str.toString();
}
}
前端使用它的方法。

$(".picture").click(function() {
layer.use('extend/layer.ext.js');
$.getJSON("${pageContext.request.contextPath}/picture/getPic",{"picture.uid":this.lang},
function (data) {
layer.photos({
html:"",
json:data
});
});
});
  注意这个中间的是左斜杠,若是写成右斜杠"\\"出不来结果,json校验会出错,如图是校验结果

%title插图%num

改成”/”后,json校验正确,图片也可以正常弹出来。

%title插图%num

这是谷歌浏览器弹出照片的效果:

%title插图%num