[英]Receive JSON Array response from Java servlet in UTF-8 charset
我正在对Java servlet进行ajax调用。 该Servlet响应的JSON数组的字符集设置为UTF-8。 但是,一旦在AJAX调用中得到响应,我就会得到??? 字符串中的字符。 我经过大量测试和研究,找不到可能的解决方案。
AJAX通话:
$.ajax({
type: 'POST',
data: {curTableName: curTableName,curTableID: curTableID},
dataType: 'json',
url: '../ShowProducts',
success: function(productInfo){
var noOfProducts = productInfo.length;
for(var i = 0; i < noOfProducts; i++)
{
product.push(productInfo[i].product.substr(0,25) + "...");
webshop.push(productInfo[i].webshop);
price.push(productInfo[i].price);
availability.push(productInfo[i].availability);
lastChecked.push(productInfo[i].lastChecked);
checkFreq.push(productInfo[i].checkFreq);
url.push(productInfo[i].url);
DisplayProductInfo(product[i],webshop[i],price[i],availability[i],lastChecked[i],checkFreq[i],url[i]);
}
}
});
而我的Java Servlet响应:
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(jsonArr.toString());
根据我自己的研究,java servlet似乎是正确的,并且javascript可能存在问题。 任何人都有什么好主意。 非常感谢所有帮助。 :)
我设法使它起作用。 问题在于,JSON需要在servlet中进行编码,并在javascript中进行解码。 谢谢-伊萨
代码更改:
AJAX通话:
$.ajax({
type: 'POST',
data: {curTableName: curTableName,curTableID: curTableID},
dataType: 'json',
url: '../ShowProducts',
success: function(productInfo){
var noOfProducts = productInfo.length;
for(var i = 0; i < noOfProducts; i++)
{
productInfo[i].product = decodeURIComponent(productInfo[i].product);
productInfo[i].product = productInfo[i].product.replace(/\+/g, ' ');
product.push(productInfo[i].product.substr(0,25) + "...");
webshop.push(productInfo[i].webshop);
price.push(productInfo[i].price);
availability.push(productInfo[i].availability);
lastChecked.push(productInfo[i].lastChecked);
checkFreq.push(productInfo[i].checkFreq);
url.push(productInfo[i].url);
DisplayProductInfo(product[i],webshop[i],price[i],availability[i],lastChecked[i],checkFreq[i],url[i]);
}
}
});
JAVA SERVLET:
productSplit[0] = URLEncoder.encode( productSplit[0], "UTF-8");
附加行已添加到Java servlet。 现在,标题已编码,然后才转到JSON对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.