如何将多个JSON从servlet传递给Javascript

时间:2012-12-07 19:46:11

标签: javascript ajax json servlets

我想将3 JSON传递给前端。我可以单独通过所有3个。我这样做是为了检查它是否正常工作。

我是这样做的:

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

我在这里的一篇文章中读到你可以把创建一个json数组并将数组发送到Ajax调用。

所以我试着这样做:

String json = "["+ json1.toString() + "," + json2.toString() + "," + json3.toString() + "]"; 
response.getWriter().write(json.toString());

在房子的客户端:

$.ajax({
        data: {param1: 'p1', param2: 'p2', param3: 'p3', param4: 'p'},
        dataType: 'json',
        url: './GetDataServlet',
        type: 'POST',
        success: function(data) {
            var   data1 = data[0];
            var   data2 = data[1]; 
            var   data3 = data[2];
$.each(data1 , function(i, val) {
 $("#personal_data").append("<p> val.firstname </p>")
 $("#personal_data").append("<p> val.lastname </p>")
)};
$.each(data2 , function(i, val) {
 $("#department_data").append("<p> val.departmentid </p>")
 $("#demartment_data").append("<p> val.departmentname </p>")
)};

//Not attaching the entire code, because it's quite long. :) 
        },
        error: function() {
            alert("An error occured while attempting fetch data.");
        }
    });

当你进行$ .ajax调用时,如何将多个JSON传递给客户端。

谢谢,

4 个答案:

答案 0 :(得分:0)

您可以尝试发送三个对象的单个数组。 [Obj1 , Obj2 , Obj3]

如果返回的三个对象取决于之前发送的对象(比如Obj2取决于Obj1.X属性为true或false,则可以有三个单独的调用

var firstResult = $.ajax({  
    url : firstUrl  
    ... other details
});

var firstResult.done(function(Obj1){

  if(Obj1.X){
    $.ajax({  
      url : secondUrl  
      ... other details
    });

   ... other calls
});

答案 1 :(得分:0)

在正确形成的JSON和AJAX请求/响应中,1个调用提供1个JSON字符串。

当然,您可以在允许的JSON结构中组合您想要的那些JSON字符串。在您的情况下,在JSON数组包装器中组合三个JSON对象绝对没有错。

我想也许你唯一的问题就在这里:

String json = "["+ json1.toString() + "," + json2.toString() + "," + json3.toString() + "]"; 
response.getWriter().write(json.toString());

您构建的字符串json已经是字符串,因此您无需再次调用toString()。只是做:

String json = "["+ json1.toString() + "," + json2.toString() + "," + json3.toString() + "]"; 
response.getWriter().write(json);

答案 2 :(得分:0)

我试图做同样的事情。我想将三个json对象传递给我的javascript。我尝试将三个json对象组合成一个json数组并传递它,但它使情况变得非常复杂。

我发现传递由我选择“%”的字符分隔的字符串要容易得多。

    String json1 = "....";
    String json2 = "....";
    String json3 = "...";
    String toApp = json1 + "%" + json2 + "%" + json3;

然后在javascript中你可以用

拆分文本
var split = line.split("%");

最后,json对象可以由split [0],split [1]和split [2]组成。

答案 3 :(得分:0)

 var c1= new Object();
c1.property1="test";
c1.property2="test";

var c2= new Object();
c2.property1="test";
c2.property2="test";

var data = { 'c1': c1, 'c2': c2 };
var parameters1 = JSON.stringify(data);

In ajax call pass parameters1 as data.
  [WebMethod]
  public static bool TestMethod(Object c1, Object c2)
  {
  }