使用ajax从servlet获取json数组

时间:2013-09-10 06:06:27

标签: java jquery ajax json jsp

我必须在我的servlet中使用json数组。

我想获取json数组值并使用ajax打印到jsp页面。

下面是代码

JSONArray  htags = new JSONArray();
        htags.add("#abc");
        htags.add("#xyz");
        htags.add("#emc");
        htags.add("#netapp");


        //top trends
        JSONArray trends = new JSONArray();
        trends.add("pass");
        trends.add("horiz");
        trends.add("software");
        trends.add("banana");

JSP

我在这里收到错误消息。

$.ajax({

            url : "SerlvetToJsp",
            dataType : 'json',
            error : function() {

                alert("Error");
            },
            success : function(data) {
                alert(data);

            }
    });

4 个答案:

答案 0 :(得分:0)

请参阅,如果要将其从servlet传递给jsp,则不需要创建request(ajax),因为servlet和jsp都存在于服务器端。您只需设置json数组作为请求属性或会话属性,并在jsp中显示并显示(带循环)。需要ajax。

如果您需要使用同步调用获取数据:

在servlet中

   PrintWriter out = response.getWriter();
   out.println(htags);

我不会用另一个完整的例子弄乱SO,请看这个SO帖子:How to send JSON array from server to client, i.e. (java to AJAX/Javascript)?

答案 1 :(得分:0)

试试这个

servlet代码

JSONArray  htags = new JSONArray();
        htags.add("#abc");
        htags.add("#xyz");
        htags.add("#emc");
        htags.add("#netapp");


        //top trends
        JSONArray trends = new JSONArray();
        trends.add("pass");
        trends.add("horiz");
        trends.add("software");
        trends.add("banana");
response.setContentType("application/json"); 
response.setCharacterEncoding("utf-8"); 
String jsons = "["+htags+","+trends+"]"; //Put both objects in an array of 2 elements
out.print(jsons);

并在你的jsp页面上

$.ajax({

            url : "SerlvetToJsp",
            dataType : 'json',
            contentType:"application/json",
            error : function() {

                alert("Error");
            },
            success : function(data) {
                var data1=data[0],
                var data2=data[2],
               alert(data1[0]);

            }
    });

答案 2 :(得分:0)

Servlet可以使用它将json数组或json对象发送到客户端。

JSONArray jsonArray = [{:}, {:}];

response.getWriter.write(jsonArray.toString());

在JSP页面中,此方法将请求JSON调用到Servlet并使用匿名函数捕获json数组或json对象(JSON.parse用于将字符串转换为json对象或json数组)方法。

$("button").click(function(){
  $.get("ServletToJSP",function(data,status){
    alert("Data: " + JSON.parse(data) + "\nStatus: " + status);
  });
});

答案 3 :(得分:-1)

在servlet中:

String uri = request.getRequestURI();
        if (uri.equalsIgnoreCase(uri)) {
                    response.setContentType("application/json");
                    /*   get the json array      */
                    response.getWriter().write(array.toJSONString());
                }

jquery的:

    $('#buttonid').on('click', function() {
           var url="your url";
        $.ajax({
                type : 'POST',
                url : url,
                data : null,
                error : function(xhr, status, error) {
                    alert("error");
                },
                success : function(data) {
                    alert("success");
                    $.each(data, function(key, val) {
                    console.log(val);
                }
            });
    });