我在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
注意:这些只是响应标头,请求标头是否也包含重要信息?
答案 0 :(得分:5)
虽然看起来你已经解决了这个问题,但最好指出两件事:
jQuery的getJSON
默认使用UTF-8。接受了什么
您给出的页面上的答案意味着如果您想要一些编码
除UTF-8外,您可以使用$.ajax()
。实际上,作为另一个
该页面上的答案说,即使你使用getJSON
,你仍然可以
使用$.ajaxSetup
设置编码。
您可能希望将JSP标头contentType更改为'application/json; charset=utf-8'
,因为这是您的jQuery方面所期望的。让事情保持一致总是好的。
答案 1 :(得分:0)
解决了它通过添加JSP头(我不知道JSP,所以它花了我一些谷歌搜索)。在页面导入标记上添加此项解决了问题:
<%@ page import="someEngine" contentType="text/html; charset=UTF-8" pageEncoding="ISO-8859-1"%>