以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助:微信开发,文本框字数控制和openid获取  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=100790)

--  作者:qwz405
--  发布时间:2017/5/18 14:50:00
--  求助:微信开发,文本框字数控制和openid获取
1.虽然文本框有提示:输入多少字数的内容。但若使用者超出字数,还是会提交,服务器就会报错,操作中断。
请教:如何控制当输入超出时,中断提交并报错。


2.请:是否可以在使用者提交时,获取对方的:Openid、国家、城市、省份、地理位置等信息。


3.网页代码:
Dim e As RequestEventArgs = args(0)

Dim wb As New weui

wb.AddPageTitle("","message","用户留言","***有限公司")      \'标题

If e.PostValues.Count = 0 Then     \'生成用户留言网页
    
    wb.AddTopTips("","toptip1","留言内容/联系电话,必须填写数据!")         \'用于显示动态错误提示
    
    wb.AddForm("","form1","s50000_message.htm").Attribute=""       \'表单...submit-->接收此表单数据页面为:s50000_message.htm...使用js脚本文件,判断是否有输入完整数据
    
    With wb.AddInputGroup("form1","ipg1","留言内容")
        .AddTextArea("留言内容",5).Placeholder = "请输入200字以内的内容."
    End With
    
    With wb.AddInputGroup("form1","ipg2")
        \'.AddInput("留言内容","留言内容","text")
        .AddInput("联系电话","联系电话","text").Placeholder = "请输入15字以内的内容."
        .AddInput("联系地址","联系地址","text").Placeholder = "请输入50字以内的内容."
        .AddInput("电子邮箱","电子邮箱","text").Placeholder = "请输入30字以内的内容."
    End With
    With wb.AddButtonGroup("form1","btg1",True)
        .Add("btn1", "留言", "submit")
        \'.Add("btn2", "返回","***")
    End With
Else     \'保存新增的订单
    Dim dr As DataRow = DataTables("用户留言").AddNew()
    Dim nms() As String = {"留言内容","联系电话","联系地址","电子邮箱"}
    For Each nm As String In nms
        dr(nm) = e.PostValues(nm)
    Next
    dr("留言时间") = Date.Now()
    dr.Save()
    With wb.AddMsgPage("","msgpage","留言成功", "我们会尽快与您取得联系!")      \'留言成功成功提示信息
        .AddButton("btn1","继续增加","s50000_message.htm")
        \'.AddButton("btn1","返回列表","list.htm")
    End With
End If

wb.AppendHTML("<script src=\'./lib/ajaxform.js\'></script>")      \'引入脚本文件

e.WriteString(wb.Build) \'生成网页


4.脚本代码:
function getmessage(){
   var v1 = document.getElementById("留言内容").value;
   var v2 = document.getElementById("联系电话").value;
   if (v1 && v2){return true}
   show("toptip1",2500);        //2500毫秒=2.5秒
   return false;
}


[此贴子已经被作者于2017/5/18 14:51:33编辑过]

--  作者:qwz405
--  发布时间:2017/5/18 14:52:00
--  
程序文件....论坛不灵光,我上传了N次才成功的。


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:http20170518.foxdb


[此贴子已经被作者于2017/5/18 14:56:02编辑过]

--  作者:lihe60
--  发布时间:2017/5/18 15:00:00
--  
连接微信,是不是必须有一个URL?
--  作者:qwz405
--  发布时间:2017/5/18 15:06:00
--  
用IP地址(开通80端口),或者申请个域名,或者用现有域名的二级域名。

移动开发指南-->微信接口,一开始就讲这个。

--  作者:有点蓝
--  发布时间:2017/5/18 15:18:00
--  
js里判断字数

function getmessage(){
   var v1 = document.getElementById("留言内容").value;
   var v2 = document.getElementById("联系电话").value;
   if (v1 && v2 && v2.length <= 15){return true}
   show("toptip1",2500);        //2500毫秒=2.5秒
   return false;
}

获取用户的信息需要使用授权链接:http://www.foxtable.com/mobilehelp/scr/0236.htm

--  作者:qwz405
--  发布时间:2017/5/19 15:54:00
--  
试用《网页简单授权》的代码
1.确认微信已关注此测试号;
2.能开启网页 s50000_message.htm;
3.已将网址abc.ngrok.cc加入到网页授权;

问题:打开 abc.ngrok.cc 时,弹错误:未关注该测试号


Dim fl As String = "e:\\baidu\\web\\" & e.path     \'设置网页根目录
If filesys.FileExists(fl)
    Dim idx As Integer = fl.LastIndexOf(".")
    Dim ext As String  = fl.SubString(idx)
    Select Case ext
        Case ".jpg",".gif",".png",".bmp",".wmf",".js",".css" ,".html",".htm",".zip",".rar"
            e.WriteFile(fl)
            Return   \'这里必须返回
    End Select
End If

Select Case e.path
    Case "abc","abc1"    \'接口配置
        If e.Request.HttpMethod.ToUpper = "GET"
            If Functions.Execute("VerifySignature",e) Then
                e.WriteString(e.GetValues("echostr"))
            End If
        End If
        
    Case "s50000_message.htm"    \'用户留言
        Functions.Execute("s50000_message",e)
        
End Select



If e.host = "abc.ngrok.cc" Then \'需要授权才能访问的域名
    Dim OpenID As String
    Dim sb As New StringBuilder
    sb.AppendLine("<meta name=\'viewport\' c>")
    If e.GetValues.ContainsKey("code") Then \'如果通过授权链接跳转而来,就根据传递过来的code参数调用接口,获取用户的OpenID
        Dim ul As String  = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code"
        ul = CExp(ul,"wx4718459301f2db8f","827cafff19659d5b93e8c7663db3999a",e.GetValues("code"))
        Dim hc As new HttpClient(ul)
        Dim jo As JObject = JObject.Parse(hc.GetData)
        If jo("openid") IsNot Nothing Then
            OpenID = jo("openid")
            e.AppendCookie("openid",OpenID) \'将openid存储在Cookie中
        End If
    Else
        OpenId =  e.Cookies("openid") \'否则从cookie中提取openid
    End If
    Dim Verified As Boolean
    Dim dr As DataRow = DataTables("Users").Find("openid  =\'" & OpenID & "\'") \'根据openid找出对应的行
    If OpenId > "" AndAlso dr IsNot Nothing Then \'授权成功
        Verified  = True
    ElseIf e.GetValues.ContainsKey("code") = False Then \'如果授权失败,且不是通过授权链接跳转而来,那么就跳转到授权链接
        Dim ul As String = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8acdb7df5beb68fd&redirect_uri=http%3a%2f%2fwexin.foxtable.com&response_type=code&scope=snsapi_base&state=123#wechat_redirect"
        sb.Append("<meta http-equiv=\'Refresh\' c>") \'跳转到授权链接
        e.WriteString(sb.ToString)
        Return
    End If
    If Verified = False Then
        sb.AppendLine("你无权访问本系统")
    Else
        sb.AppendLine("Foxtable欢迎您, <a href=\'http://wexin.foxtable.com\'>刷新页面</a>")
    End If
    e.WriteString(sb.ToString)
End If
[此贴子已经被作者于2017/5/19 15:54:20编辑过]

--  作者:有点蓝
--  发布时间:2017/5/19 16:11:00
--  
Dim ul As String  = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code"

Dim ul As String = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8acdb7df5beb68fd&redirect_uri=http%3a%2f%2fwexin.foxtable.com&response_type=code&scope=snsapi_base&state=123#wechat_redirect"

授权Url搞错了吧,你做的是哪个功能的授权?



--  作者:qwz405
--  发布时间:2017/5/19 16:27:00
--  
看了帮助、视频,还是一头浆糊,只能拷贝代码测试

我是想只有openid在我的users表中的人,才能进行相应的操作。

是公司内部的管理系统,openid我会事先登记到users表中。

我先测试,一点点弄,不懂请教老师。



--  作者:有点色
--  发布时间:2017/5/19 16:33:00
--  

 你访问的是哪个网址?直接访问 s50000_message.htm ?

 

 你要访问的,是微信的授权地址,访问微信的,验证成功,才会跳转到你的网址。


--  作者:qwz405
--  发布时间:2017/5/19 16:59:00
--  
 s50000_message.htm 是我的测试网址,能正常使用,说明http服务是可用的。

我登陆是授权网址 abc.ngrok.cc,应该是我url弄错了~