我正在对java servlet进行ajax调用。 servlet以JSON数组响应,字符集设置为UTF-8。但是,一旦我在AJAX调用中得到响应,我得到???我的字符串中的字符。我经历了大量的测试和研究,找不到可能的解决方案。
AJAX CALL:
$.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存在问题。任何人都有任何好主意。非常感谢所有帮助。 :)
答案 0 :(得分:0)
我设法让它发挥作用。问题在于JSON需要在servlet中编码,并在javascript中解码。谢谢 - 是的。
代码更改:
AJAX CALL:
$.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对象。