去掉get方式的URL中空的参数

当然,用post提交就没有任何参数了,但这不符合HTTP的规范,查询嘛,就得用get方式才好,但是get方式不够智能,查询表单中用户可能一个条件也没设置,一点查询,URL上跟一大串空参数如"?a=&b=&user=&q="很难看,我希望实现:如果用户一个条件也没选,那URL后面什么参数也不带,如果选了某个参数,URL上只带这个参数,不带任何空值的参数。

我想,唯一的方式就是不使用form,而是把非空的查询域手工组装一个URL,然后window.location.src=这个URL,但这种作法比起查询表单提交来看比较另类,所以需要有一个很强的组件把这个过程规范起来,否则开发团队自己写js实现会乱套的,代码质量和风格无法保证,[b]本着不重复制造轮子的态度,先问一下有没有能干这个活的jquery组件啊[/b]?

另外,查询表单有这种情况:有两个域,一个隐藏用于记录真实的参数,另一个显示用户的选择,这个域上点击时会弹出窗口、或出现ajax提示下拉框,用户选中一条后,其中文名称显示在该域,该记录的ID则赋给隐藏域,提交查询时,应只提交隐藏域,那个显示域其实没有用处,但默认的get提交就会全部提交了,URL会很长很难看,如果用组件自组URL就没这个问题了。

有能干这个活的jquery组件最好,没有的话只好自己实现一下,但有点信心不足,其实要考虑很多的,使用者代码怎么写?如何更简单和清晰?text\radio\checkbox\file等不同的域的取值?简单封装与灵活性的平衡等。嗯,我先抛块砖,说说我的想法:
要求开发者把所有的查询域放在一个容器如div中,每个域都要有一个id,jquery就可以找到并控制它们了,但不是所有容器中的域都是查询条件,所以开发者应显式的声明,但是显式的声明的话,就不必把所有域都放在某个容器中了,这样也好,比如除了查询表单中的查询域外,下面的翻页域其实也是一种查询条件,一起放在声明中就统一了,声明代码可以这样写:
[quote="javaeye"]
<script type="text/javascript">
//声明查询域列表,其中的域如非空则组为URL,要声明域的ID和类型,不同类型取值不同吗?
//格式为$.getMethodForm(url,[fields..],target);提交地址、域列表、目标帧(省略为_self)
$.getMethodForm("save.jsp",[{id:"field1",type:"text"},{id:"field2",type:"checkbox"},{id:"field3",type:"radio"]);
//有点复杂啊,如果能省略类型就简单了,像下面这一行写的:
//$.getMethodForm("save.jsp",["field1","field2","field3"]);
</script>
[/quote]
按钮上的代码可以这样:
[quote]
<button type="button" οnclick="$.getMethodForm.submit">保存</button>
[/quote]
组件提交时会组装为:window.location.src=url?filed1=xxxx形式执行。

请大家讨论,我还没写呢,先集思广益吧。欢迎高手奉献代码。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值