我已经搜索了两天,并尝试了我认为的所有可能的事情。我使用 GSON 创建一个 JSON 数组。当我在通过 jquery 将其发送到 Javascript 之前打印出我的 json 字符串时,它看起来像这样:
[{"var1":"hi","var2":"this","var3":"is"}]
在我看来很好。我尝试通过以下两种方式发送到 js:
String json = gson.toJson(googData, listType);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(json);
和
String json = gson.toJson(googData, listType);
<%= json %>
这是我的js代码:
$.getJSON("testgoogle.jsp", function(json) {
$.each (json, function(k, v) {
alert(v.val1);
});
});
很简单吧?我可以将其更改为 $.get 并查看字符串。如果我 alert(k) 它只提醒 0 一次。我怀疑我的 json 字符串传递了一些空格。当我警告从 jsp 返回的任何内容时,它在警告框中的显示低于说警告(“hi”)。你知道在哪里!是在警告框中,“嗨”是怎么在中间的!图片 好吧,当我从 jsp 发送 <%= "hi" %> 时,它低于 !。我将 <%= "hi" %> 一直移动到顶部,所以我的 jsp 看起来像:
<%@page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%= "hi" %>
正如你所看到的,我正在抓住稻草。这在 ! 的底部返回了“hi”。我的 jsp 中的行越多,我将“hi”向下移动,它在我的警报框中越低。还有,很奇怪的事。如果我把它留在我的jsp的顶部:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
这实际上会在我的警报中打印出来。
如果您需要更多信息,请告诉我。
解决方案: 当密钥为 var1 时,我试图调用 val1。哇!我永远不会把所有这些时间拿回来;)正确的代码与上面的代码相同,除了 val1 应该是 var1。另外,我用 eval(json) 试过了,它仍然可以工作,仅供参考。感谢您尝试帮助大家!