gpt4 book ai didi

ajax - 经典 ASP - 无法从 AJAX 发布请求中获取 Request.Form 值

转载 作者:行者123 更新时间:2023-12-04 08:28:14 25 4
gpt4 key购买 nike

我有一个脚本通过 AJAX 提交表单的 POST 请求。
当我查看网络选项卡时,它以下面的格式返回,我无法使用标准 Request.Form 读取该格式。在经典 ASP 中。由于 AJAX 请求,我看到此服务器变量也添加到页面请求中:HTTP_X_REQUESTED_WITH = XMLHttpRequest
表单设置为简单的 POST:<form method="post" action="/contact-submit">我无法更改执行 AJAX 请求的脚本以更新内容类型等。
这是下面网络选项卡上响应中的“请求负载”。我已经用谷歌搜索了几天,无法弄清楚这一点。您如何访问这些数据?我什至尝试用我通过 ASPUpload 的文件上传脚本阅读它,但是 Upload.Form("contact_name")也不起作用,它也是空白的。
我尝试了一个简单的 PHP 脚本(我不知道 PHP 是如何工作的,但是这个脚本附带了执行 POST 作为演示的脚本),并调用了 print_r($_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--

最佳答案

我研究了读取数据的解决方案,这在下面起作用。不确定这是最好/最便宜的方法,但它有效!
感谢大家的帮助/提示。如果有人有更好的方法来解析上面的响应,我全神贯注:)

<%
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
%>
更新:
如果您安装了 ASPUpload,这是另一种解决方案。我昨晚试过了,但忘了添加 Upload.Save(这可以为我节省 4 小时的工作时间 --- UGGGGGHHHH)。
'http://www.aspupload.com/manual_memory.html
Set Upload = Server.CreateObject("Persits.Upload")
Upload.Save
Name = Upload.Form("contact_name")
Response.Write Name

关于ajax - 经典 ASP - 无法从 AJAX 发布请求中获取 Request.Form 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65158652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com