经典ASP-无法从AJAX Post请求中获取请求.表单值
我有一个通过AJAX提交表单POST请求的脚本 当我查看网络选项卡时,它以下面的格式返回,我无法用经典ASP中的标准经典ASP-无法从AJAX Post请求中获取请求.表单值,ajax,forms,asp-classic,Ajax,Forms,Asp Classic,我有一个通过AJAX提交表单POST请求的脚本 当我查看网络选项卡时,它以下面的格式返回,我无法用经典ASP中的标准Request.Form读取。我看到这个服务器变量也由于AJAX请求而添加到页面请求中:HTTP\u X\u REQUESTED\u WITH=XMLHttpRequest 表单设置为一个简单的帖子: 我无法更改执行AJAX请求以更新内容类型等的脚本 这是下面网络选项卡上响应中的“请求有效负载”。我已经在谷歌上搜索了好几天,但还是没能弄明白这一点。您如何访问这些数据?我甚至试着用A
Request.Form
读取。我看到这个服务器变量也由于AJAX请求而添加到页面请求中:HTTP\u X\u REQUESTED\u WITH
=XMLHttpRequest
表单设置为一个简单的帖子:
我无法更改执行AJAX请求以更新内容类型等的脚本
这是下面网络选项卡上响应中的“请求有效负载”。我已经在谷歌上搜索了好几天,但还是没能弄明白这一点。您如何访问这些数据?我甚至试着用ASPUpload上的文件上传脚本来阅读它,但是upload.Form(“contact_name”)
也不起作用,它也是空白的
我尝试了一个简单的PHP脚本(我不知道PHP是如何工作的,但是这个脚本附带了一个脚本作为演示来执行POST),并调用print\r($\u POST)
该脚本将数组中的所有正确信息传递回“网络响应”选项卡。见鬼
有人知道如何在经典ASP中获取这些数据吗
非常感谢你事先的帮助
丹尼斯
-----------------------------254001430938683980861095915686
Content-Disposition: form-data; name="contact_name"
Test Name
-----------------------------254001430938683980861095915686
Content-Disposition: form-data; name="contact_email"
test@test.com
-----------------------------254001430938683980861095915686
Content-Disposition: form-data; name="contact_message"
my message
-----------------------------254001430938683980861095915686--
我研究了一个读取数据的解决方案,如下所示。不确定这是最好/最便宜的方法,但它确实有效 谢谢大家的帮助/提示。如果有人有更好的方法来解析上面的响应,我洗耳恭听:)
问题是您没有将表单发布为
application/x-www-form-urlencoded
,输出使用的是multipart/form data
,经典ASP只能将其作为原始二进制流读取。切换到urlencoded,它将按照您的预期工作。这是否回答了您的问题?就这样!!!谢谢你的提示和引导!!!它作为二进制数据返回,所以我需要使用BinaryRead来读取它。我刚刚创建了一个测试,通过电子邮件向我发送数据,我得到了一切!现在,我必须弄清楚如何解析这个响应。这是有帮助的,我似乎无法在最后得出这些值。由于无法使用response.write on BinaryRead,测试也很困难。这回答了你的问题吗?Lankymart,我没有上传文件,只是处理一个内容类型不可更改的POST请求。ASPupload是我用来获取数据的一个解决方案——比在下面写我自己的要容易得多(我现在知道了!)。
<%
Function BytesToStr(bytes)
Dim Stream
Set Stream = Server.CreateObject("Adodb.Stream")
Stream.Type = 1 'adTypeBinary
Stream.Open
Stream.Write bytes
Stream.Position = 0
Stream.Type = 2 'adTypeText
Stream.Charset = "iso-8859-1"
BytesToStr = Stream.ReadText
Stream.Close
Set Stream = Nothing
End Function
If Request.TotalBytes > 0 Then
Dim lngBytesCount, post
lngBytesCount = Request.TotalBytes
post = BytesToStr(Request.BinaryRead(lngBytesCount))
End If
Response.ContentType = "text/plain"
sContentType = Replace(Request.ServerVariables("CONTENT_TYPE"),"multipart/form-data; boundary=---------------------------","")
arrPost = Split(post,"-----------------------------" & sContentType)
For i = 0 to UBound(arrPost)
sVal = Replace(arrPost(i),"Content-Disposition: form-data; name=","")
arrVal = Split(sVal,Chr(10),1)
For a = 0 to UBound(arrVal)
If Instr(1, arrVal(a), "contact_name") <> 0 Then
Response.Write GetValue(arrVal(a), "contact_name")
End If
If Instr(1, arrVal(a), "contact_message") <> 0 Then
Response.Write GetValue(arrVal(a), "contact_message")
End If
Next
Next
Function GetValue(f_FullString, f_FieldName)
fieldval = Replace(f_FullString, """" & f_FieldName & """","")
'response.Write "_" & fieldval & "_<Br>"
arrVal1 = Split(fieldval,Chr(10),1)
For b = 0 to UBound(arrVal1)
newval = arrVal1(b)
newval = Left(newval,Len(newval) - 2)
newval = Right(newval,Len(newval) - 6)
'For z = 1 to Len(newval)
' CurrChar = Mid(newval, z, 1)
' Response.Write Asc(CurrChar) & "<bR>"
'Next
Next
GetValue = newval
End Function
%>
'http://www.aspupload.com/manual_memory.html
Set Upload = Server.CreateObject("Persits.Upload")
Upload.Save
Name = Upload.Form("contact_name")
Response.Write Name