Web层改进II-用xmlhttp 无声息提交复杂表单


Posted in Javascript onJanuary 22, 2007

xmlhttp是在RIA时代没有来临之前,最能使B/S程序远离每个动作刷新一次页面的痛苦做法,同时也是最平民化的一项技
术,HelloWord几句话就完成了。
    不过,大家对xmlhttp的应用大多只以Get方式在URL里传递少数的变量。其实即使是大量数据的Form,,只要用
Javascript稍加封装,,一样可以用简单的用xmlhttp完成提交,真正做到让用家宾至如归,不到页面本身需要刷新的时候
,决不去刷新用家的界面。
客户端:
function xmlhttp_submit(form_object,url)
for i = 0 to  form_object.elements.length-1
set elem = form_object.elements(i)
form_value=form_value & URLEncoding(elem.name) & "=" & URLEncoding(elem.value) &"&"
Next
set xmlhttp = CreateObject("Microsoft.XMLHTTP")
xmlhttp.open "POST",url,false
xmlhttp.setRequestHeader "CONTENT-TYPE","application/x-www-form-urlencoded"
xmlhttp.send(form_value)
end function
上面这段代码遍历了form里的对象,组装出form_value字串,然后通过send()方法以POST方式(不受长度限制)发送给服务
器端。 
又是经典的中文编码问题,需要加多一个URLEncoding函数把变量值的字符串编成UTF-8格式,也因此要采用自己不熟悉的
VBScript来写form_submit() 。
Function URLEncoding(vstrIn)
strReturn = ""
For i = 1 To Len(vstrIn)
ThisChr = Mid(vStrIn,i,1)
If Abs(Asc(ThisChr)) < &HFF Then
strReturn = strReturn & ThisChrElse
innerCode = Asc(ThisChr)
If innerCode < 0 Then
innerCode = innerCode + &H10000
End If
Hight8 = (innerCode  And &HFF00)\ &HFF
Low8 = innerCode And &HFF
strReturn = strReturn & "%" & Hex(Hight8) &  "%" & Hex(Low8)
End IfNext
URLEncoding = strReturn
End Function
服务器端
没有任何需要特别作的东西,如常响应请求就是了。

Javascript 相关文章推荐
JavaScript Tips 使用DocumentFragment加快DOM渲染速度
Jun 28 Javascript
jQuery EasyUI API 中文文档 - Dialog对话框
Nov 15 Javascript
javascript中节点的最近的相关节点访问方法
Mar 20 Javascript
JavaScript修改css样式style动态改变元素样式
Dec 16 Javascript
jQuery中.live()方法的用法深入解析
Dec 30 Javascript
简述JavaScript的正则表达式中test()方法的使用
Jun 16 Javascript
在JavaScript中使用JSON数据
Feb 15 Javascript
Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)
Sep 14 Javascript
vue v-model实现自定义样式多选与单选功能
Jul 05 Javascript
详解如何用VUE写一个多用模态框组件模版
Sep 27 Javascript
基于vue框架手写一个notify插件实现通知功能的方法
Mar 31 Javascript
JS中超越现实的匿名函数用法实例分析
Jun 21 Javascript
用正则xmlHttp实现的偷(转)
Jan 22 #Javascript
通过MSXML2自动获取QQ个人头像及在线情况(给初学者)
Jan 22 #Javascript
Javascript技术技巧大全(五)
Jan 22 #Javascript
深入认识JavaScript中的函数
Jan 22 #Javascript
Ajax::prototype 源码解读
Jan 22 #Javascript
showModalDialog 和 showModelessDialog
Jan 22 #Javascript
javascript 中对象的继承〔转贴〕
Jan 22 #Javascript
You might like
php中计算未知长度的字符串哪个字符出现的次数最多的代码
2012/08/14 PHP
用mysql_fetch_array()获取当前行数据的方法详解
2013/06/05 PHP
使用php判断服务器是否支持Gzip压缩功能
2013/09/24 PHP
php 无限级分类,超级简单的无限级分类,支持输出树状图
2014/06/29 PHP
PHP让网站移动访问更加友好方法
2019/02/14 PHP
Thinkphp5框架ajax接口实现方法分析
2019/08/28 PHP
laravel解决迁移文件一次删除创建字段报错的问题
2019/10/24 PHP
javascript 实现父窗口引用弹出窗口的值的脚本
2007/08/07 Javascript
JQuery 选择和过滤方法代码总结
2010/11/19 Javascript
纯js网页画板(Graphics)类简介及实现代码
2012/12/24 Javascript
如何在父窗口中得知window.open()出的子窗口关闭事件
2013/10/15 Javascript
jquery获取复选框被选中的值
2014/04/10 Javascript
jquery动态改变form属性提交表单
2014/06/03 Javascript
理解和运用JavaScript的闭包机制
2015/08/13 Javascript
jQuery.deferred对象使用详解
2016/03/18 Javascript
深入理解jQuery事件绑定
2016/06/02 Javascript
详解Angualr 组件间通信
2017/01/21 Javascript
基于Node的React图片上传组件实现实例代码
2017/05/10 Javascript
从零开始搭建vue移动端项目到上线的步骤
2018/10/15 Javascript
ES6中异步对象Promise用法详解
2019/07/31 Javascript
js实现移动端轮播图滑动切换
2020/12/21 Javascript
[02:43]DOTA2英雄基础教程 半人马战行者
2014/01/13 DOTA
[02:39]我与DAC之Newbee.Moogy:从论坛到TI
2018/03/26 DOTA
python将unicode转为str的方法
2017/06/21 Python
深入了解Django中间件及其方法
2019/07/26 Python
python爬虫模拟浏览器访问-User-Agent过程解析
2019/12/28 Python
Python sklearn库实现PCA教程(以鸢尾花分类为例)
2020/02/24 Python
python实现密度聚类(模板代码+sklearn代码)
2020/04/27 Python
在 Python 中使用 MQTT的方法
2020/08/18 Python
Django解决frame拒绝问题的方法
2020/12/18 Python
GUESS西班牙官方网上商城:美国服饰品牌
2017/03/15 全球购物
世界上最悠久的自行车制造商:Ribble Cycles
2017/03/18 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?用contains来区分是否有重复的对象。还是都不用
2013/07/30 面试题
父亲生日宴会答谢词
2014/01/10 职场文书
法院干警四风问题个人对照检查材料思想汇报
2014/10/07 职场文书
2021年pycharm的最新安装教程及基本使用图文详解
2021/04/03 Python