Asp classic 跟踪表单或会话中的错误

Asp classic 跟踪表单或会话中的错误,asp-classic,Asp Classic,如果这是经典的ASP 101,我深表歉意,但是我已经很久没有做过ASP了,我正在努力理解/跟踪这个错误。更糟糕的是我继承了这个应用程序,我不能问原作者 我有一个购物车,其中包括一个输入复选框和许多其他字段。当处理和提交表单时,它将通过一些javascript运行,如果一切正常,则重定向到另一个页面。(没有什么不寻常的地方)。Firebug显示,此时复选框的值根据其选中状态的不同而不同 提交表单后,它会转到另一个页面,该页面在session.Contents()集合上进行迭代,并生成一个字符串发送

如果这是经典的ASP 101,我深表歉意,但是我已经很久没有做过ASP了,我正在努力理解/跟踪这个错误。更糟糕的是我继承了这个应用程序,我不能问原作者

我有一个购物车,其中包括一个输入复选框和许多其他字段。当处理和提交表单时,它将通过一些javascript运行,如果一切正常,则重定向到另一个页面。(没有什么不寻常的地方)。Firebug显示,此时复选框的值根据其选中状态的不同而不同

提交表单后,它会转到另一个页面,该页面在session.Contents()集合上进行迭代,并生成一个字符串发送给第三方。使用fiddler,当复选框的名称在此字符串中时,该值始终为“开”

通过阅读Google,我发现session.Contents集合是会话/应用程序中的所有参数。但是,在将复选框添加到会话的任何地方,项目目录中所有文件的grep都不会出现

那么,cb存在仅仅是因为它在表单上或在javascript中使用,还是有其他方法将变量添加到会话中。(名字上的Grep没有显示任何其他实例)

其次,如果变量在会话中,无论它是如何到达的,为什么总是设置为“开”。我假设它已被添加到会话中,并在处理表单之前设置为On。但是复选框默认为未选中,所以我很困惑

有谁能帮我解释一下,甚至建议我如何追踪/修复它。(显而易见的答案是尝试使用正确的值将其强制到会话中,但我想知道为什么它行为不端,而不是在我再次遇到类似情况时忽略它


谢谢

我假设您已经确定JavaScript在允许提交之前没有修改复选框状态

提交表单时,提交的字段位于Request.form集合中。如果未选中复选框,则它不是Request.form集合的一部分。因此,您的Request.form集合中的复选框字段将与提交时选中的字段一样多,并且它们都具有各自的值“价值”属性

如果随后将这些内容添加到Session.Contents集合中,它们将一直保留到会话结束。如果从未明确清除Session.Contents集合,但多次使用不同的值提交表单,则Session.Contents集合将继续累积越来越多的内容(复选框名称,复选框值)配对,直到表单上的每个复选框都包含(复选框名称、复选框值)配对为止


您可能希望编写一个函数,从会话中清除每个表单字段,并在处理表单之后或在处理表单之前调用该函数(以对应用程序有意义的为准)。或者,只需使用Request.Form集合。

复选框与ASP一起工作。如果未清除,则需要进行一些跟踪,以查看发生了什么。如果未看到代码,则无法更具体地说明。如果表单通过querystring传递值,则可能页面正在缓存???还有其他值正在被缓存ing正确通过,因此我认为这不是缓存问题。我必须找出ASP调试的入门知识,并尝试了解发生了什么。我今天将尝试一下。您所说的很有意义,如果我对应用程序进行Grep,以获取添加到会话中的代码,或从中删除项目,我发现很少。当然,没有什么可以清除项目,除非如果他们是通过网页明确删除。我会bac稍后我肯定会标记为已回答。谢谢