1.Play后台封装和生成JsonArray(AJAX方式)
需导入
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.fasterxml.jackson.databind.JsonNode;import play.libs.Json;
public static Result testJsonArray(){
JsonNode in = request().body().asJson();//接收到的推送信息
Logger.info("收到的推送信息" + in.toString());
String group = in.get("group").textValue();
ObjectNode on = Json.newObject();
ArrayNode arr = Json.newObject().arrayNode();
for(LmProduct pro : proList){
ObjectNode proNode = Json.newObject();
proNode.put("name", pro.getProductName());
proNode.put("price", pro.getLowestBuyPrice());
arr.add(proNode);
}
Logger.info("最终的array为:" + arr);
on.put("list", arr);
return ok(on);
}
2.页面发送AJAX请求,并处理返回的JsonArray
function askForMessage(obj){
var formdata = {
"group" : group,
"proName" : proName
};
$.ajax({
type: "POST",
url: "url",
contentType: "application/json",
dataType: "json",
data: JSON.stringify(formdata),
success: function(data){
$.each(data.list, function(index, json) {
//data.list为上面的 ArrayNode arr ,index为当前遍历元素的下标
alert("#" + json.name + ", period: " + json.price );
});
}
});
}
3.JQuery处理数组的一些问题
jquery each循环,实现break和continue的功能:
break,结束循环----return false;
continue,开始下一次循环--return ture;
$.each(data.list, function(index, json) {
//data.list为上面的 ArrayNode arr ,index为当前遍历元素的下标
alert("#" + json.name + ", period: " + json.price );
return false;
});
循环中使用当前对象,this
var proIdArray = document.getElementsByName('activeproid');//这是一个节点数组
$.each(proIdArray,function(n,inputNode) {
//this.value:获取当前节点对象的value属性
<pre name="code" class="javascript"> //this.name:获取当前节点对象的name属性
if("null"==this.value){
alert("诸神归位");
this.value = "";
this.value = proID;
return false
}
});
4.遍历对象
$.each(Object, function(name, value) {
this; //this表示当前对象
name; //name表示当前属性的名称
value; //value表示当前属性的值
});