当尝试解析我的Serlvet返回到我的JSP页面的JSON时,以下代码行抛出无效字符异常:
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对象"ProgrammerForJSP"转换为JSON字符串。在其他帖子中建议这样做,以避免在自己创建 JSON 字符串时出现任何拼写错误。这是它返回的字符串:
{"ID":123,"siteName":"VEGAS","skyl":"WZ0019","ipAddress":"0.0.0.0","code":"L/BEG"}
SERVLET 代码
....
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
此错误是因为 $.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
}