以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 开启nginx反向代理之后,获取数据出现问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=196097) |
-- 作者:vimin -- 发布时间:2025/3/28 10:30:00 -- 开启nginx反向代理之后,获取数据出现问题 我微信小程序一直是没问题的。在开启NGINX反向代理之后,碰到了一个奇怪的问题: 用get方法提交数据时,”sku“字段搜索,明明有数据的情况下,前端会说没有返回值,如提交”886“返回空,提交”5886“反而又有返回值。 我尝试在后端httpserver,用以下代码: For Each key As String In e.Values.Keys MessageBox.Show(key & e.Values(key)) Next 去查看后端不管是get或者post获取的值,发现更是奇怪,有时会弹出相应的值,有时根本不理会这段代理商,绕过这段代码,直接去前端返回值了。 这是什么清空?是foxtable的问题,还是nginx的问题?post方法还没测试,其他更多字段也没测试。 |
-- 作者:有点蓝 -- 发布时间:2025/3/28 10:34:00 -- 控件ID是不是设置为大写了? 注意生成网页时,WeUI会自动将所有ID转换为小写,例如"Table1"或转换为"table1",今后不再重复提示,大家请自行留意。
|
-- 作者:vimin -- 发布时间:2025/3/28 10:38:00 -- 我这好像不涉及到控件。我就是在微信小程序用GET方法提交数据给foxtable。 |
-- 作者:有点蓝 -- 发布时间:2025/3/28 10:40:00 -- 具体代码发上来看看 |
-- 作者:vimin -- 发布时间:2025/3/28 10:55:00 -- 我节选一些代码, 微信小程序提交搜索: wx.request({ url: \'https://www.zuejie.com/VInventorySearchProduct\', timeout:6000, data:{ sku:sku, cat:category, mat:material, grad:grade, spe:spec, sup:supplier, sq:startQ, eq:endQ, slc:shelfCode }, success(res){ let results = res.data 。。。。。。 foxtable接收并处理: 以下内容为程序代码: 1 Dim e As RequestEventArgs = Args(0) 2 Dim sku As String = e.GetValues("sku") 3 Dim category As String = e.GetValues("cat") 4 Dim material As String = e.GetValues("mat") 5 Dim grade As String = e.GetValues("grad") 6 Dim spec As String = e.GetValues("spe") 7 Dim supplier As String = e.GetValues("sup") 8 Dim startQ As Integer = e.GetValues("sq") 9 Dim endQ As Integer = e.GetValues("eq") 10 Dim shelf As String = e.GetValues("slc") 11 Dim command As String 12 13 Dim json As New JObject 14 Dim ja As New JArray 15 Dim sql As New SQLCommand 16 sql.C 17 Dim dtb As DataTable 18 Dim sum As Integer = 0 \'合计数 19 Dim sumW As Single = 0 \'合计重量 20 Dim no As Integer = 0 \'序号 21 json("tb") = ja 22 23 If sku = "" Then 24 command = "SELEC/T i.货架码, i.数量, b.供应商, b.净重, b.毛重, b.基础货号, bp.类别名称, bp.材料, bp.材料等级, bp.规格 FROM {产品库存} i JOIN {基础sku} b ON i.SKU = b.SKU JOIN {基础产品货号} bp ON b.基础货号 = bp.基础货号 WHERE bp.类别名称 LIKE \'%" & _ 25 category & "%\' AND bp.材料 LIKE \'%" & material & "%\' AND bp.规格 LIKE \'%" & spec & "%\' AND bp.材料等级 LIKE \'%" & grade & "%\' AND b.供应商 LIKE \'%" & supplier & "%\' AND i.货架码 LIKE \'%" & shelf & "%\'" 26 If startQ >= 0 Then 27 command = command & " AND i.数量 >= \'" & startQ & "\'" 28 End If 29 If endQ >= 0 Then 30 command = command & " AND i.数量 <= \'" & endQ & "\'" 31 End If 32 sql.CommandText = command 33 dtb = sql.ExecuteReader() 34 If dtb.DataRows.Count = 0 Then 35 e.WriteString("no") 36 Else 37 For i As Integer = 0 To dtb.DataRows.Count - 1 38 ja.Add(New JObject) 39 sum = sum + dtb.DataRows(i)("数量") 40 If dtb.DataRows(i)("毛重") > 0 Then 41 sumW = sumW + dtb.DataRows(i)("毛重") * dtb.DataRows(i)("数量") 42 ja(i)("weight") = "Y" 43 Else 44 If dtb.DataRows(i)("净重") > 0 Then 45 sumW = sumW + dtb.DataRows(i)("净重") * dtb.DataRows(i)("数量") 46 ja(i)("weight") = "Y" 47 Else 48 ja(i)("weight") = "N" 49 End If 50 End If 51 If dtb.DataRows(i)("基础货号").ToString.EndsWith("8") Then 52 ja(i)("std") = "N" 53 Else 54 ja(i)("std") = "Y" 55 End If 56 no += 1 57 Dim name As String = dtb.DataRows(i)("规格") & " " & dtb.DataRows(i)("材料") & "-" & dtb.DataRows(i)("材料等级") & " " & dtb.DataRows(i)("类别名称") 58 ja(i)("no") = no 59 ja(i)("quantity") = dtb.DataRows(i)("数量").ToString 60 ja(i)("product") = name 61 ja(i)("shelf") = dtb.DataRows(i)("货架码").ToString 62 Next 63 json("sum") = sum 64 json("sumW") = Math.Round(sumW,1) 65 e.WriteString(json.ToString) 66 End If 67 Else 68 sql.CommandText = "SELEC/T pi.*, bs.产品名称, bs.净重, bs.毛重, bs.基础货号 FROM {产品库存} pi JOIN {基础sku} bs ON pi.SKU = bs.SKU WHERE pi.SKU like \'%" & sku & "%\'" 69 dtb = sql.ExecuteReader() 70 If dtb.DataRows.Count = 0 Then 71 e.WriteString("no") 72 Else 73 For i As Integer = 0 To dtb.DataRows.Count - 1 74 ja.Add(New JObject) 75 sum = sum + dtb.DataRows(i)("数量") 76 If dtb.DataRows(i)("毛重") > 0 Then 77 sumW = sumW + dtb.DataRows(i)("毛重") * dtb.DataRows(i)("数量") 78 ja(i)("weight") = "Y" 79 Else 80 If dtb.DataRows(i)("净重") > 0 Then 81 sumW = sumW + dtb.DataRows(i)("净重") * dtb.DataRows(i)("数量") 82 ja(i)("weight") = "Y" 83 Else 84 ja(i)("weight") = "N" 85 End If 86 End If 87 If dtb.DataRows(i)("基础货号").ToString.EndsWith("8") Then 88 ja(i)("std") = "N" 89 Else 90 ja(i)("std") = "Y" 91 End If 92 no += 1 93 ja(i)("no") = no 94 ja(i)("quantity") = dtb.DataRows(i)("数量").ToString 95 ja(i)("product") = dtb.DataRows(i)("产品名称").ToString 96 ja(i)("shelf") = dtb.DataRows(i)("货架码").ToString 97 Next 98 json("sum") = sum 99 json("sumW") = Math.Round(sumW,1) 100 e.WriteString(json.ToString) 101 End If 102 End If 就这么一段,在我sku输入“5886”可以,搜“886”居然返回空值。然后去messagebox.show获取的值,居然有时候messagebox.show有弹框,有时没弹框,直接处理后面的语句了。很是奇怪。 [此贴子已经被作者于2025/3/28 10:57:01编辑过]
|
-- 作者:vimin -- 发布时间:2025/3/28 11:12:00 -- 啥也没动,现在这个搜索问题是好了,但是会绕过httpserver: For Each key As String In e.Values.Keys MessageBox.Show(key & e.Values(key)) Next 这段代码还是让人费解。 暂时也先不管了,不知道是foxtable的问题,还是小程序的问题,还是nginx反向代理的问题。 网上搜了,说反向代理会把post请求改成get请求,我倒还没碰到这种情况。 |
-- 作者:有点蓝 -- 发布时间:2025/3/28 11:57:00 -- 小程序里显式指定methon为post,header里指定是json模式还是表单模式 |
-- 作者:vimin -- 发布时间:2025/3/28 13:46:00 -- 是用默认的JSON模式 |
-- 作者:有点蓝 -- 发布时间:2025/3/28 14:09:00 -- 不要默认,最好是显式指定各种参数 |
-- 作者:vimin -- 发布时间:2025/3/28 20:20:00 -- 好的,我都改成e.PlainText接收试试 |