【问题标题】:ReactJS returns parsererror SyntaxError: Unexpected token a after AJAX call to JAVA servletReactJS 返回 parsererror SyntaxError: Unexpected token a after AJAX call to JAVA servlet
【发布时间】:2014-12-16 21:57:11
【问题描述】:

我正在尝试完成 ReactJS tutorial,但出现此错误“parsererror SyntaxError: Unexpected token a”。

我有带有 get 和 post 方法的 java servlet,我用下一个 json 发送响应:

"[{"author": "Pete Hunt", "text": "This is one comment"}, {"author": "Jordan Walke", "text": "This is another comment"}]"

我也试过这个 {"author": "Pete Hunt", "text": "This is one comment"}, {"author": "Jordan Walke", "text": "This is another comment"}

我看不出问题出在哪里。对我来说,我好像错过了 ReactJS 中的一些东西

UPD 我的 servlet 响应代码。我正在使用 gson 库。

response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");

ModelObject obj = new ModelObject();
obj.setAuthor("Pete Hunt");
obj.setText("This is one comment");

ModelObject obj2 = new ModelObject();
obj2.setAuthor("Jordan Walke");
obj2.setText("This is *another* comment");

List<ModelObject> objList = new ArrayList<ModelObject>();

objList.add(obj);
objList.add(obj2);

Gson gson = new Gson();

PrintWriter out = response.getWriter();
out.write(gson.toJson(objList));
out.close();
out.flush()

【问题讨论】:

  • 删除第一个字符的第一个和最后一个字符(双引号)。
  • 我也试过没有它们。

标签: java javascript jquery reactjs


【解决方案1】:

当您尝试解析用冗余双引号括起来的字符串时,如下所示:

JSON.parse('"[{"author": "Pete Hunt", "text": "This is one comment"}]"');

代替:

JSON.parse(' [{"author": "Pete Hunt", "text": "This is one comment"}] ');

然后你会得到SyntaxError: Unexpected token a,因为它试图将"[{" 解析为一个字符串,并且不希望接下来得到一个字符a

您必须显示打印 JSON 字符串的确切命令,但您肯定会在某处获得额外的双引号,如果您将 "author" 更改为 "X"Unexpected token a 将变为 Unexpected token X

您可能正在做的事情(尽管这只是我的猜测,因为您没有显示任何实际代码)是手动构建 JSON 字符串,这绝不是一个好主意。你应该使用像 Google Gsonjson-io 这样的库来为你做这件事。

另请参阅:Java JSON serialization - best practice 问题。

【讨论】:

  • 我用 servlet 代码编辑了问题。在 chrome 控制台中,我可以看到正确的数组,但异常更改为 Uncaught SyntaxError: Unexpected token o。从其他问题中我发现它可以是 JSON 双重解析。目前还不清楚。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-04
  • 2016-02-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多