我在mysql queries
中使用了2个不同的if and else
。在if and else
中,我正在向客户端发送json object
,我使用java object
从GSON library
序列化,然后使用jquery在客户端进一步操作它。在客户端jquery ajax
方法中,我必须确定此json对象来自服务器端代码的哪一部分。例如,它是来自部分还是来自其他部分。假设我在out.println(json+"string_literal")
发送了一个String_literal,然后我不知道如何在客户端jquery ajax方法上检查它。可以告诉我如何提取这个string
。每次我尝试提取这个字符串或做其他事情时,我都搞砸了json对象。我想做这样的事情....
success:function(data){
if(JSON HAS STRING ALONG WITH IT)
{
// do this
}
else
{
// this
productContainer.innerHTML ="";
var $productContainer = $('#productContainer');
$.each(data,function(key,value){
$productContainer.append("<div id='productBox' class='grid_3'>\n\
<a href='product.jsp?id="+value['id']+"'><img src='"+value["image"]+"'/></a><br/>\n\
<a href='product.jsp?id="+value['id']+"'><span class='black'>"+value['name']+"</span></a><br/>\n\
<span class='black'>By "+value['company']+"</span><br/><span class='red'>RS."+value['price']+"</span></div>");
}
}) ;
}
编辑服务器端代码
ArrayList<product> p = new ArrayList();
ps = con.prepareStatement("some query");
ps.setInt(1,p_id.get(i));
rs=ps.executeQuery();
while(rs.next())
{
product pr =new product();
pr.id = rs.getInt("product_id");
pr.name = rs.getString("product_name");
pr.company =rs.getString("company_name");
pr.image = rs.getString("image_name");
pr.price = rs.getDouble("price");
p.add(pr);
}
}
String json = new Gson().toJson(p);
response.setContentType("application/json");
out.println(json);
我真的很感激任何帮助。
答案 0 :(得分:1)
在JSON括号之外解析连接变量很困难,我建议你在JSON中添加该变量。
如果您选择使用GSON添加变量,则应将其添加到java类中,然后解析它。
示例:
将您的变量添加到java类。
public class Envelope{
private Array<Product> products;
private Boolean newVariable;
...
// getter's and setter's
}
使用GSON解析对象:
Envelope envelope = new Envelope();
envelope.setNewVariable(true);
envelope.setProducts(products);
Gson gson = new Gson();
String jsonInString = gson.toJson(envelope);
然后在JSP上打印字符串
out.print(jsonString)
最后,在JQuery方面,如果ajax请求成功,那么你应该能够在
看到你的变量success:function(data){
if( data.newVariable == true) // suppose new variable is boolean
{
// do this
var products[] = data.products;
} else {
// do other thing
}
}
答案 1 :(得分:1)
最简单的方法是将此变量添加到您的JSON响应中。您可以创建一个附加类来包装产品列表和这个附加变量,或者只使用如下地图:
// ... create your product ArrayList as before
Map<String, ?> result = new HashMap<>();
result.put("variable", "some_value");
result.put("products", p);
String json = new Gson().toJson(result);
response.setContentType("application/json");
out.println(json);
然后在客户端:
success: function(data) {
if (data.variable === 'some value') {
// do your stuff
} else {
// ...
$.each(data.products, function(key, value) { /* ... */ }
}
}