【问题标题】:unable to retrieve json data using jQuery无法使用 jQuery 检索 json 数据
【发布时间】:2011-01-29 13:36:00
【问题描述】:

我正在尝试从 servlet 检索 JSON 数据并以 html 显示。我能够使用 jQuery .ajax() 连接到 servlet,但无法检索 json 值。

下面是我的html示例

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript" src="javascript/jquery-1.4.4.js"></script>
<script type="text/javascript">
$(document).ready(function(){
// click function

$('#btn').click(function(){

 // get the request

 /*

      $.ajax({url:'JsonCreationOfUrlAndContent',
             type:"GET",
             dataType:"json",
             asyn:true,
             success:function(data)
             { 

             $("div#main").text(data.Trends[1].title);}

      });


    */

    //now using getJSON

    $.getJSON('JsonCreationOfUrlAndContent',function(data)
            {
        $("div#main").html(data.Trends[1].title);
            });

        });

});


</script>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<input id="btn" type="button" name="test" value="PressME"></input>
<div id="main">


</div>
</body>
</html>

下面是我的 java 代码,我在其中创建了一些如下结构的示例 JSON

{"Trends":[
     {"url":"http://google.com",
      "title":"No#1 Search Engine"},
     {"url":"http://bing.com",
     "title":"Best socal search engine"},
   {"url":"http://altavista.com",
   "title":"Oldest search engine"}]}

下面是我的java代码

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub

        PrintWriter pw =(PrintWriter)response.getWriter();
        // create the JSONObject

        JSONObject jobj1 = new JSONObject();
         jobj1.put("url","http://google.com");
         jobj1.put("title","No#1 Search Engine");

         JSONObject jobj2 = new JSONObject();
         jobj2.put("url","http://bing.com");
         jobj2.put("title","Best socal search engine");

         JSONObject jobj3 = new JSONObject();
         jobj3.put("url","http://altavista.com");
         jobj3.put("title","Oldest search engine");

         JSONArray jarr = new JSONArray();
          jarr.add(jobj1);
          jarr.add(jobj2);
          jarr.add(jobj3);

          // now add JSONArrayO to JSONObject

          JSONObject fObj = new JSONObject();
          fObj.put("Trends",jarr);

          pw.println(fObj);


    }

【问题讨论】:

  • 您收到服务器返回的 json 了吗? firebug 或类似的东西可以帮助你
  • 你能比“无法检索”更具体吗?你收到错误了吗?
  • hmm..抱歉不知道如何检查..当我尝试发出任何警报时,它没有显示任何内容..
  • 如果您通过 URL 调用您的 servlet,您会看到 json 吗?
  • 我只是在最后一行保留了一些 SOP,使用以下 JSON 结构可以正常打印。

标签: java jquery json


【解决方案1】:

您是否检查过您是否真的使用 firebug 收到了 json 响应?

我假设您的注释代码是工作版本。在您评论的行中,有这一行:

$("div#main").text(data.Trends[1].title);

但在未注释的那一行中,这行有点不同:

$("div#main").html(data.Trends[1].title);

也许这就是原因?

【讨论】:

  • 现在我收到了从 servlet 到 html 的 JSON 响应,如果我把它显示为 $("div#main").text(data)
  • 但是如果我把 $("div#main").html(data.Trends[0].title);它没有显示任何东西。如何在 jQuery 中遍历 JSON 字符串。我需要评估它然后显示吗?
  • 我刚刚发现了一些东西。如果我要删除 dataType:"json" 并直接在 html 中显示 json,它会打印整个 json 字符串。如果我把它作为 dataType:"json" 那么 json 字符串不会打印。很奇怪
  • 嗯很奇怪。我刚刚尝试运行您的代码。它似乎运行良好,除了我必须更改 jarr.add(jobj1);到 jarr.put(jobj1);在java代码内部(很可能只是由于我们使用的库的差异引起的)和jquery src直接从jquery和json url中获取。
  • Henry 是对的,我测试了你的 JSON 和 jQuery(但在 PHP 上),我做了 alert(), .text(), .html() 都显示了 "Best socal search engine" 。你确定你运行的代码和你放在这里的代码完全一样吗?
【解决方案2】:
asyn:true

应该是

async:true

【讨论】:

  • 感谢指点。我不知道,但它仍然适用于即使是 asyn :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-05
  • 2013-01-06
  • 2013-01-06
  • 2016-06-06
  • 1970-01-01
  • 2021-01-25
相关资源
最近更新 更多