深入分析dwr中的DWRUtil.getValues

当你需要通过dwr完成类似提交form的操作,了解DWRUtil.getValues是必须的
 /**
 * Given a map, call getValue() for all the entries in the map using the entry key as an element id.
 * Given a string or element that refers to a form, create an object from the elements of the form.
 * @see http://getahead.ltd.uk/dwr/browser/util/getvalues
 */
DWRUtil.getValues = function(data) {

  //定义ele变量,
  var ele;
//如果ele是一个字符串通过 $函数转化一下,$函数的使用见我的上个帖子 深入分析dwr中的DWRUtil.$
  if (typeof data == "string") ele = $(data);
//如果ele是个HTML元素对象,通常应该是一个form对象
  if (DWRUtil._isHTMLElement(data)) ele = data;
 
 if (ele != null) {
     //如果ele不是form对象,返回,只有form对象才有elements 属性
    if (ele.elements == null) {
      alert("getValues() requires an object or reference to a form element.");
      return null;
    }
    //定义一个空对象reply
    var reply = {};
    //定义一个对象放key
    var value;
     //遍历form,将表单key-value放入reply,忽略<input type="image"/>
    for (var i = 0; i < ele.elements.length; i++) {
      if (ele[i].id != null) value = ele[i].id;
      else if (ele[i].value != null) value = ele[i].value;
      else value = "element" + i;
      reply[value] = DWRUtil.getValue(ele[i]);
    }
    return reply;
  }

//如果传入的参数对象不是表单对象,通常应该是与领域对象对应js对象
  else {
    //遍历对象属性,将与属性对应的页面元素值拷到js对象中
    for (var property in data) {
      // Are there any elements with that id or name
      if ($(property) != null || document.getElementsByName(property).length >= 1) {
        data[property] = DWRUtil.getValue(property);
      }
    }
    return data;
  }
};

总结
1)如果你需要使用ajax完成表单提交的操作,那么你应该使用DWRUtil.getValues,参数或者是个form对象,或者是个与领域对象对应的js对象
2)应该看到第二种用法的局限性,如果存在多个相同的表单或者是个复合的js对象,那么第二种用法是不合适的
3)第一种用法看似复杂,但更具灵活性
到底改如何选择取决于具体的应用
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值