当尝试将我的Serlvet返回的JSON解析到我的JSP页面时,以下代码行抛出了无效的字符异常:
var obj = jQuery.parseJSON(data);
客户端代码
<script type = "text/javascript">
function updateProgrammerDetails(site, Id) {
$.post('EngineAdminServlet',
{
action: "updateProgrammerMenu",
siteDetails: site,
ID: Id,
},
function(data, status){
var pid, name, sky, ip, eleven;
var obj = jQuery.parseJSON(data);
.........
}
}).fail(function(error) {
alert("Error retrieving details from server");
}); //end ajax call
}
</script>
使用GSON生成的JSON字符串
我已经在我的Servlet类中导入了GSON库,以便转换我的Java对象&#39; ProgrammerForJSP&#39;到JSON字符串。这是在其他帖子上推荐的,以避免在我自己创建JSON字符串时出现任何拼写错误。这是它返回的字符串:
{"ID":123,"siteName":"VEGAS","skyl":"WZ0019","ipAddress":"0.0.0.0","code":"L/BEG"}
服务代码
....
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
String gson = new Gson().toJson(myObject);
response.getWriter().write(gson);
} //end of method
我不知道我是否错过了一步或做错了什么?我的想法是IP地址字段可能会丢弃解析器并破坏代码(因此无效字符异常),因为它包含句点字符?我真的不知道。
修改 我使用的是jquery-1.11.3.js
答案 0 :(得分:0)
错误是因为$.post
方法已经检测到JSON响应并将结果解析为对象。然后,您尝试在对象而不是JSON字符串上调用parseJSON
,这会导致您看到的错误。您只需删除对$.parseJSON
的调用即可。试试这个:
function updateProgrammerDetails(site, Id) {
$.post('EngineAdminServlet', {
action: "updateProgrammerMenu",
siteDetails: site,
ID: Id,
}, function(data, status) {
var pid, name, sky, ip, eleven;
// work with the object in 'data' here, E.g:
console.log(data.ID, data.siteName); // = 123, 'VEGAS'
}).fail(function(error) {
alert("Error retrieving details from server");
}); //end ajax call
}