如何返回一个json对象并在HTML中调用Ajax调用

时间:2013-10-21 16:11:49

标签: java javascript json servlets

我的D3代码中有一个简单的信息树结构。 D3脚本从脚本d3.json()函数调用json,结果json给出了树结构数据。现在我有几个来自数据库并点击Servlet的信息。我必须在Servlet中动态生成json,以便它可以根据用户响应进行更改。这是脚本&我使用的json ..

这是我从我对Servlet进行Ajax调用的HTML文件。 Ajax正在调用Servlet ,但回复响应时出错。我收到一条“发生错误”的消息。当我运行servlet时......

 <script src="http://code.jquery.com/jquery-latest.min.js"></script>
    <script>            
        function doajax(){
            $.ajax({
                url: "AccountServlet",
                type: "post",
                dataType: "json",

                error:function(){
                    alert("error occured!!!");
                },
                success:function(data){
                    alert(data.fullName + "\n" + data.mobileNo);
                }
            });
        }
    </script>

这是我要从中获取回复的Html 这个文件只是在响应中调用Servlet.But我收到错误消息...

在accountServlet中,我正在创建像这样的json

     ArrayList<DistinctSourceCount> countList = new ArrayList<DistinctSourceCount>();
        countList.add(new DistinctSourceCount("Jan", 1800));
        countList.add(new DistinctSourceCount("Feb", 1500));
        countList.add(new DistinctSourceCount("March", 2000));
        countList.add(new DistinctSourceCount("April", 1550));
        countList.add(new DistinctSourceCount("May", 1000));
        countList.add(new DistinctSourceCount("June", 1700));
        countList.add(new DistinctSourceCount("July", 1400));
        countList.add(new DistinctSourceCount("Aug", 1900));
        countList.add(new DistinctSourceCount("Sept", 1000));
        countList.add(new DistinctSourceCount("Oct", 1500));
        countList.add(new DistinctSourceCount("Nov", 1100));
        countList.add(new DistinctSourceCount("Dec", 2000));

        Gson gson = new Gson();
        JsonArray arrayObj = new JsonArray();
        for (int i = 0; i < countList.size(); i++) {
            DistinctSourceCount count = countList.get(i);
            JsonElement linObj = gson.toJsonTree(count);
            arrayObj.add(linObj);
        }

        JsonObject myObj = new JsonObject();
        myObj.addProperty("success", true);
        myObj.add("topList", arrayObj);
        myObj.addProperty("totalCount", countList.size());

        System.out.println(myObj.toString());
        System.out.close();

这是我迄今为止所做的代码。任何人都可以帮我解决如何在Servlet中创建json对象并获取脚本响应的问题?请任何人帮忙

1 个答案:

答案 0 :(得分:1)

您必须在servlet中创建json对象。然后在脚本中使用ajax调用来检索json。要在servlet中创建json,您可以使用Gsonjava-json等任何库。

例如:

        JSONObject jsonObject = new JSONObject();
        jsonObject.put("name","flare");
        JSONArray jsonArray = new JSONArray();
        JSONObject jsonObject_child = new JSONObject();
        jsonObject_child.put("name", "analytics");
        jsonArray.put(jsonObject_child);
        jsonObject.put("children",jsonArray);
        System.out.println(jsonObject);

以下的ajax代码:

        $.ajax({
        type: "POST",
        url: "PATH_OF_SERVLET",
        dataType: 'json',
        success: function(response) {
        // Parse your response from Servlet here.
        }

    });