以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  异步函数问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=141265)

--  作者:wandongliang
--  发布时间:2019/9/25 11:58:00
--  异步函数问题
select case e.path
    Case "addnew.htm"
        Functions.Execute("addnew_htm",e,wb)
    Case "receive.htm"
        e.AsyncExecute = True  \'通知系统异步执行,不要关闭信道
        Functions.AsyncExecute("receive_htm",e) \'异步调用函数处理接收到的数据和文件
end select


addnew_htm函数
Dim e = args(0)
Dim wb = args(1)
wb.AddForm("","form1","receive.htm")
With wb.AddInputGroup("form1","ipg1","增加员工")
    .AddInput("姓名","姓名","Text") \'前一个"姓名"是ID,后一个"姓名"是标题
    .AddInput("年龄","年龄","number")
    .AddSelect("学历","学历","大专|本科|硕士|博士")
    With .AddUploader("up1","照片",True) \'True表示允许上传多个文件
        .AllowDelete = True \'允许删除
        .Incremental = True \'允许 重复选择文件或连续拍照
    End With
End With
With wb.AddButtonGroup("form1","btg1",True)
    .Add("btn1", "确定", "submit").Attribute= ""
End With
wb.AddToast("","tst1", "正在上传",1)
wb.AddToast("","tst2", "上传成功",0)
wb.AddToast("","tst3", "上传失败",0).Icon= "warn"
wb.AppendHTML("<script src=\'./foxtableAppTest/js/ajaxform.js\'></script>") \'引入脚本文件
e.WriteString(wb.Build)

receive_htm 函数
Dim e As RequestEventArgs = args(0)
Dim Name As String  = e.PostValues("姓名")
Dim Xueli As String  = e.PostValues("学历")
Dim Age As Integer = Val(e.PostValues("年龄"))
Dim Files As String = ""
For Each key As String In e.Files.Keys
    If key = "up1" Then
        For Each fln As String In e.Files(key)
            \'生成随机文件名,后缀名不变
            Dim newName As String = rand.NextString(10) &  fln.SubString(fln.LastIndexOf("."))
            e.SaveFile(key, fln, ProjectPath & "Attachments\\" & newName)
            Files = Files & IIF(Files > "" , vbcrlf, "") & newName
        Next
    End If
Next
Dim cmd As new SQLCommand
cmd.C
cmd.CommandText = "Insert Into 员工  (姓名, 年龄, 学历, 照片) Values(?,?,?,?)"
cmd.Parameters.Add("@姓名",Name)
cmd.Parameters.Add("@年龄",Age)
cmd.Parameters.Add("@学历",XueLi)
cmd.Parameters.Add("@照片",Files)
cmd.ExecuteNonQuery()
e.WriteString("ok")
e.Handled = True  \'通知系统异步函数执行完毕,可以关闭信道

ajaxform.js文件
function submitForm(){
    show("tst1",2000);
    var result = submitAjaxForm(\'form1\',\'afterSubmit\');
}

function afterSubmit(result){
    hide("tst1");
    if (result==\'OK\') {
        show("tst2");
        location="addnew.htm";
    }
    else{
        show("tst3",2000);
    }
}



以上是代码,几个问题,1:执行过程中出现报错。
                                     2:执行结束后,并不会发挥到addnew.htm界面
请问怎么解决?

--  作者:有点蓝
--  发布时间:2019/9/25 12:12:00
--  
出现什么错误?

With wb.AddButtonGroup("form1","btg1",True)
    .Add("btn1", "确定", "button").Attribute= ""
End With

--  作者:wandongliang
--  发布时间:2019/9/25 12:52:00
--  
是这个,不知道为什么刚刚没复制过来,.Add("btn1", "确定", "submit").Attribute= ""

报错是“函数错误”

--  作者:wandongliang
--  发布时间:2019/9/25 12:53:00
--  
确定按钮是调用JS
--  作者:wandongliang
--  发布时间:2019/9/25 13:15:00
--  
有时候还会这样报错“由于线程退出或应用程序请求,已中止 I/O 操作。”
--  作者:有点蓝
--  发布时间:2019/9/25 13:34:00
--  
不要使用submit,改为button啊:.Add("btn1", "确定", "button").Attribute= ""

3楼说的详细错误发上来看看

5楼的错误可以忽略不用管

--  作者:wandongliang
--  发布时间:2019/9/25 14:24:00
--  
蓝老师,改过之后,目前暂时没有报错了。
就是有一点,经常出现这样的问题,就是点击拍照,完了之后,拍的照片不出现在uploader组件当中,如果把页面重新刷新几次,又能正常使用,不知是什么原因造成的

--  作者:有点蓝
--  发布时间:2019/9/25 14:27:00
--  
换不同的浏览器试试
--  作者:wandongliang
--  发布时间:2019/9/25 14:29:00
--  
好的
--  作者:wandongliang
--  发布时间:2019/9/25 15:11:00
--  
蓝老师,请问rand生成的随机数,有没有重复的可能?