1、问题描述

最近一直在搞公司老系统的需求开发,前端是asp,后端的vb。碰到了一个需求,是做一个”日志查询”功能,查询条件为:时间&操作人。

原本我的设计思路是异步查询,通过ajax传参到后端再把后端查询结果返回过来,这样就可以既得到查询结果,也可以保留当前的查询条件。但实际操作起来碰到了困难。

公司老系统这种前后端ajax交互的逻辑是:

这种方式貌似只能ajax返回字符串,而我的查询结果是一个集合,我不知道在xxxAjax.asp的{...}中该怎么定义并接收一个list。

因为用的技术语言比较老,网上也没找到相关的解决方法。

2、解决方法

后来我参考了其他相似功能的页面,没有用ajax,而是用了Request.QueryString。asp页面把查询条件封装成form传给自己,Request.QueryString其实就是获取url中传过来的值的,就像这些:

Request.QueryString是获取get请求的,而另一种Request.Form是获取post请求的

具体可以参考:关于request.querystring()的理解_Better Thinker-CSDN博客_request.querystring用法

Request.QueryString.Count判断传过来的参数数量,如果数量>0则调用后端方法,否则不调用。这样就避免了刚打开该查询页面,参数都为null,导致的参数缺失错误!(因为asp的执行顺序是先执行<%...%>里面的代码。然后再去执行<head><body><script>里面的代码。这和jsp一样。所以如果不先做Request.QueryString.Count>0判断再调后端方法就会报参数缺失错误的)至于查询后保留查询条件就很简单了,因为本来参数就是自己传给自己的,所以直接Request接收就行了。

<%
Set bzHrHirePlan = CreateObject("bzHrHirePlan.wsc")
dateNow=aspCommon.FormatTime(Date,1)
if Request("BeginDate")<>"" and Request("EndDate")<>"" then
dBeginDate=Request("BeginDate")&""
dEndDate=Request("EndDate")&""
else
dBeginDate=dateNow
dEndDate=dateNow
end if
if Request("operatorTxt")<>"" then
sOperator=Request("operatorTxt")
else
sOperator=auCommon.LOGON_UID
end if
%> ...asp前端代码 <% If Request.QueryString.Count <> 0 Then
Set rs1 = bzHrHirePlan.ListLog(null,dBeginDate,dEndDate,sOperator)
If rs1.EOF Then
%>
<p>[没有符合条件的记录。]</p>
<% Else %>
<table class="table table-datalist">
<tr>
<th>序号</th>
<th>职位编号</th>
<th>操作人</th>
<th>操作时间</th>
<th>记录</th>
</tr>
<% i=0
Do While Not rs1.EOF
i=i + 1
idPlan=Right("00000"&rs1("EventKeyLink"),5)
operator=rs1("EventHandler")
operateTime=rs1("LogTime")
record=rs1("EventDescription") %>
<tr>
<td>
<%=i%>
</td>
<td>
<%=idPlan%>
</td>
<td>
<%=operator%>
</td>
<td>
<%=operateTime%>
</td>
<td>
<%=record%>
</td>
</tr>
<% rs1.MoveNext
Loop %>
</table>
<% End If
rs1.Close
End If %>

3、参考资料

关于request.querystring()的理解_Better Thinker-CSDN博客_request.querystring用法https://blog.csdn.net/a6225301/article/details/8970595

Request.Form&Request.QueryString实现伪ajax的效果的更多相关文章

  1. csharp: Request.Form,Request.QueryString,Request.Params,Request.Cookies

    /// <summary> /// Request.Form,Request.QueryString,Request.Params /// http://msdn.microsoft.co ...

  2. C#中 Request, Request.params , Request.querystring , Request.Form 区别 与联系用法

    C#中 Request, Request.params , Request.querystring , Request.Form 区别 与联系用法? Request.params , Request ...

  3. Request.Form("id")与Request.QueryString("id")的区别

    获取以表单提交的post类型的值,也就是获取<form method="post">这种方式提交的值request包含各种方式的值,没有指名是什麽,所以Request. ...

  4. 客户端的数据来源:QueryString, Form, Cookie Request[]与Request.Params[]

    在ASP.NET编程中,有三个比较常见的来自于客户端的数据来源:QueryString, Form, Cookie . 我们可以在HttpRequest中访问这三大对象. QueryString: 获 ...

  5. request.querystring和request.form、session的区别

    1. request.querystring是用来接收地址里面问号“?”后面的参数的内容,  用get方法读取的 不安全   request.form是用来接收表单递交来的数据 ,是用post方法读取 ...

  6. Request、Request.Form、Request.QueryString 用法的区别

    Request.Form:获取以POST方式提交的数据. Request.QueryString:获取地址栏参数(以GET方式提交的数据). Request:包含以上两种方式(优先获取GET方式提交的 ...

  7. Request、Request.Form和Request.QueryString的区别

    Request.Form:获取以POST方式提交的数据(接收Form提交来的数据): Request.QueryString:获取地址栏参数(以GET方式提交的数据) Request:包含以上两种方式 ...

  8. asp.net Request、Request.Form、Request.QueryString的区别(转)

    Request.Form:获取以POST方式提交的数据. Request.QueryString:获取地址栏参数(以GET方式提交的数据). Request:包含以上两种方式(优先获取GET方式提交的 ...

  9. [转载]Request、Request.Form和Request.QueryString的区别

    Request.Request.Form和Request.QueryString的区别 request本身是一个系统的静态对象,本身也可以作为数组调用,比如request("abc" ...

  10. Request.QueryString()和Request()和Request.Form();

    一. querystring的用法及原理 当页面上的 FORM以 GET方式向页面发送请求数据 (如数据含有不安全字符,则浏览器先将其转换成 16进制的字符再传送,如空格被转成 %20)时, WEB ...

随机推荐

  1. 可观测性的常见用例|Techtarget

    [ 文章来源 ]https://www.techtarget.com/searchitoperations/tip/Common-use-cases-for-observability 这些可观测性用 ...

  2. Mysql单表访问方法,索引合并,多表连接原理,基于规则的优化,子查询优化

    参考书籍<mysql是怎样运行的> 非常推荐这本书,通俗易懂,但是没有讲mysql主从等内容 书中还讲解了本文没有提到的子查询优化内容, 本文只总结了常见的子查询是如何优化的 系列文章目录 ...

  3. 京东云TiDB SQL优化的最佳实践

    京东云TiDB SQL层的背景介绍 从总体上概括 TiDB 和 MySQL 兼容策略,如下表: SQL层的架构 用户的 SQL 请求会直接或者通过 Load Balancer 发送到 京东云TiDB ...

  4. CSAPP实验attacklab

    attacklab 实验报告和答案文件都在 https://github.com/thkkk/attacklab

  5. Codeforces 1682 D Circular Spanning Tree

    题意 1-n排列,构成一个圆:1-n每个点有个值0或者1,0代表点的度为偶数,1代表点的度为计数:询问能否构成一棵树,树的连边在圆内不会相交,在圆边上可以相交,可以则输出方案. 提示 1. 首先考虑什 ...

  6. Docker之介绍与安装

    Docker 说明 本章,我们主要从Docker简介.Docker中几个核心概念和Docker安装这几个方面对Docker进行介绍! 1. Docker 简介 1.1. 什么是 Docker Dock ...

  7. Arctic 基于 Hive 的流批一体实践

    背景 随着大数据业务的发展,基于 Hive 的数仓体系逐渐难以满足日益增长的业务需求,一方面已有很大体量的用户,但是在实时性,功能性上严重缺失:另一方面 Hudi,Iceberg 这类系统在事务性,快 ...

  8. Windows7下驱动开发与调试体系构建——2.R3与R0的通信示例

    目录/参考资料:https://www.cnblogs.com/railgunRG/p/14412321.html 在阅读本节前,建议先阅读<Windows内核安全与驱动开发>第五章内容, ...

  9. JS逆向实战1——某省阳光采购服务平台

    分析 其实这个网站基本没有用到过什么逆向,就是简单的图片base64加密 然后把连接变成2进制存成文件 然后用ocr去识别即可 !! 注意 在获取图片连接 和对列表页发起请求时一定要用一个请求,也就是 ...

  10. C# 窗体相关知识

    一  窗体 固定窗体大小,并不能最大/最小化: FormBorderStyle属性设置为:FixedSingleMaximizeBox = falseMinimizeBox = false都是在For ...