2

我有一个全英文的网站。使用 Spring 和 Bakcbone.js。在其中一个视图中,我动态创建了一个列表,其中的每个 li 都是一个花式链接。单击它会使用 AJAX 加载弹出窗口的内容。这是我的fancybox init:

$(".fancyboxA").fancybox({
            type : 'ajax',
            fitToView : false,
            autoSize : true,
            autoCenter : false,
            helpers : {
                overlay : {
                    locked : false
                }
            }
        });

我已经使用 fancybox 将图像加载到我网站的另一个位置,并且一切正常。这次我通过 AJAX 加载一个简单的页面,它所做的只是显示来自属性文件的文本。文本是西里尔文。我得到一堆?????????

几件事:

  1. 我在页面、servlet xml 中设置了编码,并使用 UTF-8 保存属性文件
  2. 我确实在页面上显示了相同文本的一部分(LI 的可点击文本调用了幻想框)并且它显示正确。只有当它出现在fancybox中时才会给我带来问题。

我检查了 Fancybox 代码,它不会更改 jQuery ajax 调用的编码。我检查文档,jQuery 默认使用 UTF-8

关于我可能遗漏的任何想法?

谢谢

4

1 回答 1

2

我发现了我的问题。

在对我从服务器获得的响应进行更深入的分析后,我发现我仍然得到了错误的字符编码。显然,我在 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);
}
于 2013-09-23T05:00:57.033 回答