我新收到Uncaught Syntax Error,唯一的补充就是从服务器向客户端发送/检索json数据.如何调查它是什么?以下是截图
有时我在谷歌浏览器中遇到以下错误.
Java脚本
// Post the topic in the post section function updatePost(xhr,status,jsonData){ var args = $.parseJSON(jsonData);
在发送到客户端之前从服务器日志打印的数据
10:20:15,101 INFO [stdout] (http--127.0.0.1-8080-14) Printing json data { 10:20:15,102 INFO [stdout] (http--127.0.0.1-8080-14) "topic_username" : "srikanth marni",10:20:15,102 INFO [stdout] (http--127.0.0.1-8080-14) "topic_lstUpdate" : "2012-09-06 10:20:15.025",103 INFO [stdout] (http--127.0.0.1-8080-14) "topic_body" : "Whats up",104 INFO [stdout] (http--127.0.0.1-8080-14) "isValid" : "true" 10:20:15,105 INFO [stdout] (http--127.0.0.1-8080-14) }
创建Json对象的服务器代码
stringWriter = new StringWriter(); // jfactory.createJsonGenerator(writer,JsonEncoding.UTF8); jGenerator = jfactory.createJsonGenerator(stringWriter); jGenerator.useDefaultPrettyPrinter(); jGenerator.writeStartObject(); // { jGenerator.writeStringField("topic_username",loginUserName); // "title" : title jGenerator.writeStringField("topic_lstUpdate",topicBean.getTopicVO().getLastUpdatedTimestamp().toString()); jGenerator.writeStringField("topic_body",topicBean.getTopicVO().getBody()); jGenerator.writeStringField("isValid","true"); jGenerator.writeEndObject(); // } jGenerator.close(); //String jsonData = topicBean.getTopicVO().getBody(); request.setAttribute("JSON_DATA",stringWriter.toString()); System.out.println(" Printing json data " +stringWriter.toString()); RequestDispatcher rd = servletContext.getRequestDispatcher("/meteor");
Uncaught SyntaxError: Unexpected token e jquery.js.jsf:16 bF.extend.parseJSON jquery.js.jsf:16 updatePost circle_topic.js.jsf:216 request.onMessage publish_subscribe.js.jsf:56 _f jquery.atmosphere.js.jsf:1975 _invokeFunction jquery.atmosphere.js.jsf:1967 _invokeCallback jquery.atmosphere.js.jsf:2027 AtmosphereRequest.ajaxRequest.onreadystatechange jquery.atmosphere.js.jsf:1438
JSON数据
Logging message from publish_subsrcibe :{ "topic_username" : "srikanth marni","topic_lstUpdate" : "2012-09-06 11:52:59.966","topic_body" : "testing","isValid" : "true" }
解决方法
这可能有用也可能没用,但是当外部系统调用的处理程序因语法错误而失败时,我也遇到了“意外的令牌E”错误.
function handleSubsystemResult(text) { // Chrome reported "Unexpected token E" here var something = JSON.parse(text); ... } function main() { ... callExternSubsystem( "externalSubsystemCode()",handleSubsystemResult ); }
外部子系统代码因语法错误而失败.只有在尝试使用JSON.parse()结果时,Chrome才会报告错误.如果在某种处理程序中调用JSON.parse(),我会检查是谁密切调用了该处理程序.