Play前后台使用JsonArray交互,以及使用JQuery遍历array数组和JsonArray

来源:互联网 发布:linux根据域名查ip 编辑:程序博客网 时间:2024/06/02 17:02

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表示当前属性的值});




0 0