我有一个完全英文的网站。使用 Spring 和 Bakcbone.js。在其中一个 View 中,我动态创建一个列表,其中每个 li 都是一个 fancybox 链接。单击时,它会使用 AJAX 加载弹出窗口的内容。这是我对 fancybox init 的了解:
$(".fancyboxA").fancybox({
type : 'ajax',
fitToView : false,
autoSize : true,
autoCenter : false,
helpers : {
overlay : {
locked : false
}
}
});
我已经使用 fancybox 在我网站的另一个位置加载图像并且一切正常。 这次我通过 AJAX 加载一个简单的页面,它所做的只是显示来自属性文件的文本。文本为西里尔文。我得到一堆?????????
有几件事:
- 我已经在页面、servlet xml 和属性中设置了编码 使用 UTF-8 保存文件
- 我确实在 页面(调用 fancybox 的 LI 的可点击文本)及其 显示正确。只有当它出现在精美的盒子里时 给我带来了问题。
我检查了 Fancybox 代码,它没有更改 jQuery ajax 调用的编码。我检查了文档,jQuery 默认使用 UTF-8
你知道我可能会错过什么吗?
谢谢
最佳答案
我发现了我的问题。
对从服务器获得的响应进行更深入的分析后,我发现我仍然收到错误的字符编码。显然,我在 Spring XML 文件中所做的所有配置对于 AJAX 调用来说是不够的。对于常规页面来说已经足够了,但对于使用 AJAX 动态加载的内容来说就不够了。
所以我能够通过在返回内容的方法中设置编码来解决这个问题,如下所示:
@RequestMapping(method = RequestMethod.GET, value = "/mySuperPage")
public ModelAndView getMySupercontent(@RequestParam int id, HttpServletRequest request, ModelMap map, HttpServletResponse response) {
map.put("mySuperStuff", uiContentRetriever.getSuperStuff(id));
//This is what does the trick
response.setContentType("text/plain;charset=UTF-8");
return new ModelAndView("/mySuperPage", map);
}
关于jquery - Fancybox AJAX编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18948639/