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


本页地址:http://www.foxtable.com/mobilehelp/topics/0103.htm