Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共10 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:开启nginx反向代理之后,获取数据出现问题

1楼
vimin 发表于:2025/3/28 10:30:00
我微信小程序一直是没问题的。在开启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方法还没测试,其他更多字段也没测试。
2楼
有点蓝 发表于:2025/3/28 10:34:00
控件ID是不是设置为大写了?

注意生成网页时,WeUI会自动将所有ID转换为小写,例如"Table1"或转换为"table1",今后不再重复提示,大家请自行留意。
3楼
vimin 发表于:2025/3/28 10:38:00
我这好像不涉及到控件。我就是在微信小程序用GET方法提交数据给foxtable。
4楼
有点蓝 发表于:2025/3/28 10:40:00
具体代码发上来看看
5楼
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编辑过]
6楼
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请求,我倒还没碰到这种情况。
7楼
有点蓝 发表于:2025/3/28 11:57:00
小程序里显式指定methon为post,header里指定是json模式还是表单模式
8楼
vimin 发表于:2025/3/28 13:46:00
是用默认的JSON模式
9楼
有点蓝 发表于:2025/3/28 14:09:00
不要默认,最好是显式指定各种参数

json数据使用e.PlainText接收
10楼
vimin 发表于:2025/3/28 20:20:00
好的,我都改成e.PlainText接收试试
共10 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .03906 s, 2 queries.