ASP:request.form没有返回值?

时间:2010-09-06 07:46:36

标签: asp-classic vbscript

我有以下表格,

<form action="contact_us.asp" method="post" enctype="multipart/form-data" name="form1" id="form1">
   <input name="firstname" type="text" id="firstname" size="30" />
   <input name="lastname" type="text" id="lastname" size="30" />
   <input type="submit" name="submit" id="submit" value="Submit" />
</form>

但是当我试图在我的ASP文件contact_us.asp中获取这些post变量的值时,它返回空白。代码如下:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>
<%

Dim FirstName, LastName, Email, Message
FirstName = request.form("firstname")
LastName = request.form("lastname")

response.write(FirstName & "OK")

%>

它只给我“回报”。 Message变量中没有任何内容?

请帮帮我,告诉我这里有什么问题?

3 个答案:

答案 0 :(得分:21)

经典ASP不支持multipart/form-data。即使对于ASP历史悠久的语言来说,这是一个令人惊讶的基本缺陷,但是你要做些什么呢,转向ASP.NET? (是吗?哦。好吧,不用再想。)

如果您没有进行文件上传,最简单的方法就是坚持使用默认的enctypeapplication/x-www-form-urlencoded)。 multipart/form-data的唯一优势是您可以将文件上传到其中。 (理论上,它还有一个优势,你可以明确地指定字符编码。但是没有浏览器实际上这样做。)

如果确实需要在Classic ASP中处理multipart/form-data,则需要自己解析传入的请求体,将其拆分为字段和值。或者更确切地说,使用现有的库来执行此操作*。

该库通常会提供单独的界面来读取上传的文件和其他表单值。这完全取代了Classic ASP Request.Form接口的使用。您可以在哪里找到它取决于您选择的库。这意味着,如果您希望拥有一个可以同时响应enctype的表单,则必须检查类型并使用两个不同接口中的一个。

*:有负载。 for example。我不支持这些中的任何一个......它们都没有按照标准正确地解析多部分,并且两者似乎对文件名安全性有点松懈(从不存储用户提交的文件filename!安全灾难!)。但这似乎与ASP上传脚本的课程相提并论。至少,与许多人不同,他们不会为他们要钱。

答案 1 :(得分:2)

我通过enctypeapplication/x-www-form-urlencoded正常工作的表单标记完全删除Request.Form("SomeInputTagId")(默认为method="post")。我也不需要安装任何第三方读者。希望这会有所帮助。

答案 2 :(得分:0)

请勿使用enctype="multipart/form-data"

从代码中删除它,看它是否有效。 form-data enctype用于上传数据,例如图像文件。如果使用enctype

,则需要稍微区别地访问表单元素

如果要上传数据,那么您使用的ASP对象(例如ASP Upload)将具有访问表单字段的功能。 Request.form("")无法工作。

访问表单值将是:

Set yourUploadComponent = CreateObject("Your.UploadComponentClassString")
sFormValue = yourUploadComponent.Form.Item("txtName").Value

您需要阅读对象文档。