【发布时间】:2012-05-28 14:46:24
【问题描述】:
我在 json 中收到了对 jQuery 的回复。逻辑工作正常,但我无法让他正确编码数据(如 üäö)。
我在 SO 上搜索并找到了this 问题,该问题建议将getJSON 更改为普通的 AJAX 调用。我已经这样做了,并添加了 setContentType 选项,但是,只要出现 äüö,我仍然会收到奇怪的迹象。
关于如何解决这个问题的任何想法?
$(function() {
$("#cnAntragsteller").autocomplete({
source: function(request, response) {
$.ajax({
url: "http://localhost/api",
dataType: "jsonp",
data: {
search: request.term
},
success: function(data) {
response($.map(data.persons, function(item) {
return {
label: item.cn + " (PN: " + item.imPersonalNumber + ")",
value: item.cn,
pn: item.imPersonalNumber,
cn: item.cn,
cc: item.imCostCenter,
jb: item.imJobTitle,
jbd: item.imJobTitleDescription
}
}));
}
});
},
minLength: 0,
select: function(event, ui) {
$("#pnAntragsteller").val(ui.item.pn);
$("#jbAntragsteller").val(ui.item.jb);
$("#jbdAntragsteller").val(ui.item.jbd);
$("#ouKostenstelle").val(ui.item.cc);
$.ajax({
url: "http://localhost/api",
contentType: "application/json; charset=utf-8",
dataType: 'json',
data: {
pn: ui.item.pn
},
success: function(data) {
$("#cnLeiter").val(data.cn);
}
});
}
})
})
响应标头(第一个标头不显示数据,它只是重定向到输出):
Content-Length:0
Date:Tue, 22 May 2012 06:13:41 GMT
Location:http://localhost/api/redirection
Server:Apache-Coyote/1.1
Content-Length:177
Content-Type:text/html
Date:Tue, 22 May 2012 06:13:41 GMT
Expires:0
Server:Apache-Coyote/1.1
注意:这些只是响应头,请求头是否也包含重要信息?
【问题讨论】:
-
您确定服务器以 UTF-8 格式返回数据吗?
-
嗯,我很清楚,但因为它只是 json 输出,没有 html,所以我不能添加元标记。输出由某个 JSP 页面生成。
-
您可以尝试使用 Web Inspector (Chrome/Safari) 或 Firebug 查看输出吗?检查标题和数据。还要确保 OutputStream 以 UTF-8 编写。
-
@nhahtdh 添加了有问题的标题。输出流是什么意思?
-
如果包装OutputStream的Writer不以UTF-8编码写入,那么数据就从服务器弄乱了。