我想将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传递给客户端。
谢谢,
答案 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)
{
}