0

我想将 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

4 回答 4

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
});
于 2012-12-07T19:52:23.850 回答
0

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

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

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

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

您构建的 Stringjson已经是一个字符串,因此您无需toString()再次调用它。做就是了:

String json = "["+ json1.toString() + "," + json2.toString() + "," + json3.toString() + "]"; 
response.getWriter().write(json);
于 2012-12-07T19:53:27.537 回答
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)
  {
  }
于 2013-09-21T10:58:20.877 回答
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] 组成。

于 2013-08-06T20:45:41.417 回答