json 响应中的特殊字符未在 IE 中解析
Special character in json response is not parsed in IE
我在 js 文件中使用以下代码从 servlet 获取响应,如下所示:
代码如下:
function(response){
$("#city").attr("disabled", false);
var select = $('#cityList');
select.find('option').remove();
var parsedObject = JSON.parse(response);
for(var city in parsedObject){
$('<option>').val(parsedObject[city].cityName).text(parsedObject[city].cityName).appendTo(select);}}
在 Internet Explorer 中,我收到一条错误消息,在以下行中指出“无效字符”:
var parsedObject = JSON.parse(响应);
检查响应后,我注意到 object 城市名称导致了问题:
{"countryId":0,"stateId":0,"cityId":4046,"cityName":"Belle Vall�}
正确的城市名称是 Belle Vallée。似乎 IE 不允许解析这个城市名称,因此,下拉列表不显示任何城市值。
在 Google Chrome 中,我确实看到了所有城市值,但是,上述城市名称显示不正确,如下所示:
我找到了一个解决方案,可以在 header 中添加以下代码以允许 chrome 正确显示特殊字符,但它对我不起作用。
< meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
以下代码正在servlet端执行:
这是我的 ajax 调用新函数的样子:
function changeState(){
var state = $("input#province").val();
$.ajax({
type: "GET",
url : 'LocationServlet',
dataType : "json",
contentType: "application/json; charset=utf-8",
data : {"stateName": state},
success : function(response){
$("#city").attr("disabled", false);
var select = $('#cityList');
select.find('option').remove();
var parsedObject = JSON.parse(response);
for(var city in parsedObject){
$('<option>').val(parsedObject[city].cityName).text(parsedObject[city].cityName).appendTo(select);
}
}
});
}
添加
response.setCharacterEncoding("UTF-8");
如果您的回复来自 ajax 电话。只需检查您的 ajax 调用的内容类型。
$.ajax({
type: "GET",
dataType : "json",
contentType: "application/json; charset=utf-8",
...
})
您收到的回复似乎已经解析过了。
而不是线:
var parsedObject = JSON.parse(响应);
尝试使用作为解析对象收到的“响应”。
我在 js 文件中使用以下代码从 servlet 获取响应,如下所示:
代码如下:
function(response){
$("#city").attr("disabled", false);
var select = $('#cityList');
select.find('option').remove();
var parsedObject = JSON.parse(response);
for(var city in parsedObject){
$('<option>').val(parsedObject[city].cityName).text(parsedObject[city].cityName).appendTo(select);}}
在 Internet Explorer 中,我收到一条错误消息,在以下行中指出“无效字符”: var parsedObject = JSON.parse(响应);
检查响应后,我注意到 object 城市名称导致了问题: {"countryId":0,"stateId":0,"cityId":4046,"cityName":"Belle Vall�}
正确的城市名称是 Belle Vallée。似乎 IE 不允许解析这个城市名称,因此,下拉列表不显示任何城市值。
在 Google Chrome 中,我确实看到了所有城市值,但是,上述城市名称显示不正确,如下所示:
我找到了一个解决方案,可以在 header 中添加以下代码以允许 chrome 正确显示特殊字符,但它对我不起作用。
< meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
以下代码正在servlet端执行:
这是我的 ajax 调用新函数的样子:
function changeState(){
var state = $("input#province").val();
$.ajax({
type: "GET",
url : 'LocationServlet',
dataType : "json",
contentType: "application/json; charset=utf-8",
data : {"stateName": state},
success : function(response){
$("#city").attr("disabled", false);
var select = $('#cityList');
select.find('option').remove();
var parsedObject = JSON.parse(response);
for(var city in parsedObject){
$('<option>').val(parsedObject[city].cityName).text(parsedObject[city].cityName).appendTo(select);
}
}
});
}
添加
response.setCharacterEncoding("UTF-8");
如果您的回复来自 ajax 电话。只需检查您的 ajax 调用的内容类型。
$.ajax({
type: "GET",
dataType : "json",
contentType: "application/json; charset=utf-8",
...
})
您收到的回复似乎已经解析过了。 而不是线: var parsedObject = JSON.parse(响应);
尝试使用作为解析对象收到的“响应”。