经典ASP-无法从AJAX Post请求中获取请求.表单值

经典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

我有一个通过AJAX提交表单POST请求的脚本

当我查看网络选项卡时,它以下面的格式返回,我无法用经典ASP中的标准
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