submitAjaxFileds
submitAjaxFiled用于发送表单中部分输入框的值,语法:
submitAjaxFileds(url,func,id1,id2...,asyn)
url | 接收数据的目标网页 |
func | 回调函数名,收到服务器返回信息后,会调用此函数进行处理。 |
id1,id2... | 输入框ID,个数不限。 |
asyn | 逻辑型,可选参数,是否异步执行,默认为true,如果要同步执行,请设置为false。 注意是true和false,不是True和False。 |
例如:
submitAjaxFileds('getCodes.htm','setCodes','province','county');
表示将ID为"province"和"county"两个输入框的值 ,异步提交到后台的"getCodes.htm"页面处理, 服务器返回的数据由函数setCodes函数负责接收和处理。
当asyn参数为False,也可以不指定func参数,此时submitAjaxFileds函数将返回一个值,此值就是服务器返回的数据,例如:
var result=submitAjaxFileds("valid.htm","","产品","数量","折扣",false);
表示将产品、数量和折扣三个输入框的值提交到后台的"valid.htm"页面处理,并将服务器返回的结果存储在变量result中。
注意,这里的func参数设置为"",并不能直接省略。
一个例子
假定要求设计一个下图所示的输入页面,选择省市后,自动列出所有该省所有的县供选择,选择县之后,自动输入该县的区号和邮编:
当然,要完成这个设计,首先得在后台准备一个"行政区域"数据表:
设计步骤
1、在"d:\web"目录下,建立一个子目录lib,在这个目录建立一个文本文件,文件名为"ajaxform.js",文件内容为:
function setCodes(){
var result= submitAjaxFileds('getCodes.htm','','province','county',false);
if(result){
var vals=result.split("|");
if(vals.length==2){
document.getElementById("areacode").value=vals[0];
document.getElementById("postcode").value=vals[1];
}
}
}
这个文件定义了一个JS函数,将province(省)和county(县)输入框的值同步发送到服务器,服务区返回的数据的格式为"区号|邮编",将收到的 数据拆分之后,分别写入区号(areacode)和邮编(postcode)输入框。
2、HttpRequest事件代码:
Select
Case e.Path
Case "test.htm"
Dim
wb As New
weui
wb.AddForm("","form1","test.htm")
With wb.AddInputGroup("form1","ipg1","自动输入")
With .AddSelect("province","省市","|"+DataTables("行政区域").GetComboListString("省市"))
.Attribute =
"onchange=""setAjaxOptions('county','getCounties.htm','province',false)"""
End
With
With .AddSelect("county","县","")
.Attribute =
"onchange='setCodes()'"
'调用js函数
End
With
.AddInput("areacode","区号","text")
.AddInput("postcode","邮编","text")
End With
With
wb.AddButtonGroup("form1","btg1",True)
.Add("btn1",
"确定",
"submit")
End With
wb.AppendHTML("<script
src='./lib/ajaxform.js'></script>") '引入脚本文件
e.WriteString(wb.Build)
'生成网页
Case "getCounties.htm"
'根据输入的省,获取县市列表
Dim pps
As String =
DataTables("行政区域").GetComboListString("县市","省市='"
& e.Values("province")
& "'")
e.WriteString("|"
& pps)
Case "getCodes.htm"
'根据输入的省和县,获取区号有邮编
Dim dr
As DataRow
= DataTables("行政区域").Find("省市='"
& e.Values("province")
& "' and
县市='"
& e.values("county")
& "'")
If
dr IsNot
Nothing Then
e.WriteString(dr("区号")
& "|"
& dr("邮编"))
End If
End Select